请编一个函数void fun(int tt[M][N],int pp[N]),tt指向一个M行N列的二维数组,求出二维数组每列中最小元素,并依次放入pp所指一维数组中。二维数组中的数已在主函数中赋予。 注意:部分源程序存在文件PROGl.C中。 请

admin2013-04-02  43

问题 请编一个函数void fun(int tt[M][N],int pp[N]),tt指向一个M行N列的二维数组,求出二维数组每列中最小元素,并依次放入pp所指一维数组中。二维数组中的数已在主函数中赋予。
  注意:部分源程序存在文件PROGl.C中。
  请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include
#define M 3
#define N 4
void fun (int tt[M][N], int pp[N])
{
}
NONO()
{/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */
  int i, j, k, m, t[M][N], p[N] ;
  FILE *rf, *wf ;
  rf = fopen("in.dat","r");
  wf = fopen("out.dat","w");
  for(m = 0 ; m < 10 ; m++) {
    for(i=0; i      for(j=0; j    fscanf (rf, "%6d", &t[j]);
    }
    fun (t, p);
    for (k = 0; k < N; k++) fprintf (wf, " %4d ", p[k]);
    fprintf(wf, "\n");
  }
  fclose(rf);
  fclose(wf);
}
main()
{int t [M][N]={{22,45, 56,30},{19,33, 45,38},{20, 22,66,40}};
   int p [N], i, j, k;
   printf ("The original data is : \n");
   for(i=0; i     for(j=0; j       printf ("%6d", t[j]);
     printf("\n");
   }
   fun (t, p);
   printf("\nThe result is:\n");
   for (k = 0; k < N; k++) printf (" %4d ", p[k]);
   printf("\n");
   NONO();
}

选项

答案{ int i,j, min, k; for(i=0; itt[j][i]){ min=tt[j][i]; k=j; } pp[i]=tt[k][i]; } }

解析 进入fun函数,根据前面的分析:
(1)依次访问每一列的元素。
(2)在对每一列的访问过程中选出最小数。
(3)将选出的最小数依次放到一维数组中。
转载请注明原文地址:https://jikaoti.com/ti/3in0FFFM
0

最新回复(0)