问答题 给定程序MODI1.C中函数fun()的功能是:输出M行、M列列数方阵,然后求两条对角线上元素之和,返回此和数。请改正程序中的错误,使它能得出正确的结果。
#include<stdio.h>
#define M 5
/**********found**********/
int fun(int n,int xx[][])
int i,j,sum=0;
printf("/nThe%d x%d matrix:/n",M,M);
for(i=0;i<M;i++)
for(i=0;j<M;j++)
/**********found**********/
printf("%f",xx[i][j]);
printf("/n");

for(i=0;i<n;i++)
sum +=xx[i][i]+xx[i][n-i-1];
return(sum);

main()
int aa[M][M]=1,2,3,4,5,
4,3,2,1,0,6,7,8,9,0,9,8,7,6,5,3,4,5,6,7;
printf("/nThe sum of all elements on 2 diagonals is%d.",fun(M,aa));


【正确答案】(1)int fun(int n,int xx[][M]); (2)printf(”%4d",xx[i][j]);
【答案解析】[解析] 本题中函数的功能是输出M行、M列整数方阵,然后求两条对角线上各元素之和。其中,假设矩阵行、列分别为i、j,那么对角线上的元素特点是主对角线上i=j、逆对角线上j=M-i-1。
①第一个标识下fun()函数的定义中对于二维数组的定义在原题中并没有给出空间,所以将“int fun(int n,int xx[][])”改为“int fun(int n,int xx[][M])”。
②fun()函数中n是int型,C语言输出语句中整型应该是%d,所以第二个标识下的“printf("%f",xx[i][j]);”应改为“printf("%4d",xx[i][j]);”。
[考点] 函数定义,C语言基本语法。