问答题 请编写函数fun,函数的功能是求出二维数组周边元素之和,作为函数值返回。二维数组中的值在主函数中赋予。 例如:二维数组中的值为: 1 3 5 7 9 2 9 9 9 4 6 9 9 9 8 1 3 5 7 0 则函数值为61。 注意:部分源程序存在文件PROG1.C文件中。 请勿改动主函数mare和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。l #include<stdio.h>2 #define M 43 #define N 54 int fun(int a[M][N])5 {67 }8 main()9 { Int aa[M][N]={{1,3,5,7,9},{2,9,9,9,4},{6,9,9,9,8},{1,3,5,7,0}};10 int i,j,y;void NONO();11 printf(''The original data is:\n'');12 for(i=0;i<M; i++)13 { for(j=0;j<N;j++)printf(''%6d'',aa[i][j]);14 printf(''\n'');15 }16 y=fun(aa);17 printf(''\nThe sum:%d\n'',y);18 printf(''\n'');19 NONO( );20 }21 void NONO( )22 {/*请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/23 int i,j,y,k,aa[M][N];24 FILE *rf,*wf;25 rf=fopen(''in.dat'',''r'');26 wf=fopen(''out.dat'',''w'');27 for(k=0;k<10;k++){28 for(i=0;i<M;i++)29 for(j=0;j<N;j++)fscanf(rf,''%d'',&aa[i][j]);30 y=fun(aa);31 fprintf(wf,''%d\n'',y);32 }33 fclose(rf);34 fclose(wf);35 }
【正确答案】正确答案:1 int tot=0,i,j; 2 for(i=0; i<N; i++){ 3 tot+=a[0][i]; 4 tot+=a[M-1][i]; 5 } 6 for(i=1;i<M-1; i++){ 7 tot+=a[i][0]; 8 tot+=a[i][N-1]; 9 } 10 return tot;
【答案解析】解析:进入fun函数,根据前面的分析:求周边元素的和,可以采用两个循环分别把行元素和列元素相加。但要避免把周边元素重复相加。