问答题
下列程序定义了N×N的二维数组,并在主函数中赋值。请编写函数fun,函数的功能是:求出数组周边元素的平均值并作为函数值返回给主函数中的s。例如,若a数组中的值为:0 1 2 7 91 9 7 4 52 3 8 3 14 5 6 8 25 9 1 4 1则返回主程序后s的值应为3.375。注意:部分源程序在文件PROG1.C中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:1 #include<stdio.h>2 #include<conio.h>3 #include<Stdlib.h>4 #define N 55 double fun(int w[][N])6 {78 }9 void main()10 {11 FILE*wf;12 int a[N][N]={0,1,2,7,9,1,9,7,4,5,2,3,8,3,1,4,5,6,8,2,5,9,1,4,1);13 int i,j;14 double s;15 system("CLS");16 printf("***The array***\n");17 for(i=0;i<N;i++)18 { for (j=0;j<N;j++)19 { printf("%4d",a[i][j]);)20 print:f("\n");21 }22 s=fun(a);23 printf("***THE RESULT***\n");24 printf("The sum is:%lf\n",s);25 /*****************/26 wf=fopen("out.dat","w");27 fprintf(wf,"%lf",s);28 fclose(wf);29 /*****************/30 }
【正确答案】正确答案:double fun(int w[][N]) { int i,j,k=0; double sum=0.0; for(i=0;i<N;i++) for(j=0;j<N;j++) if(i==0‖i==N—1‖j==0‖j==N—1)/*只要下标中有一个为0或N—1,则它一定是周边元素*/ { sum=sum+w[i][j];/*将周边元素求和*/ k++; } return sum/k;/*求周边元素的平均值*/ }
【答案解析】解析:本题要求计算二维数组周边元素的平均值,for循环语句控制循环过程,if条件语句根据数组元素的下标判断该元素是否为二维数组的周边元素。 本题采用逐一判断的方式,周边元素的规律为下标中有一个是0或N—1,所以只要下标中有一个为0或N—1,那么它一定是周边元素。计算周边元素个数的方式是当给sum累加一个值时,k也加1。