下列给定程序中 函数fun()的功能是:输出M行N列整数方阵 然后求两条对角线上的各元素之和
问题详情
下列给定程序中,函数fun()的功能是:输出M行N列整数方阵,然后求两条对角线上的各元素之和,返回此和数。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构.
试题程序:
include <conio.h>
include <stdio.h>
define M 5
/**********************************/
iht 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 (j=0; j<M; j++)
/**********************************/
printf("%4f",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}};
clrscr();
printf("nThe sum of all elements on 2
diagnals is %d",fun(M, aa));
}请帮忙给出正确答案和分析,谢谢!
参考答案
正确答案:(1)错误: int fun(iht nintxx[][]) 正确: int ltm(iht mint r.x[][M])(2)错误: printf("%4ff'xx[i]fj]); 正确: printf("%4d"xx[i][j]);
(1)错误: int fun(iht n,intxx[][]) 正确: int ltm(iht mint r.x[][M])(2)错误: printf("%4f,f',xx[i]fj]); 正确: printf("%4d",xx[i][j]); 解析:该题错误比较隐蔽,一般的C语言上机考试很少涉及printf顺数中的错误,在这里,我们只要明白“d”和“f”的区别就OK了。格式字符d表示:以带符号的十进制形式输出整数(正整数不输出符号);格式字符f表示;以小数形式输出单、双精度,隐含输出6位小数。