问答题 下列给定程序中,函数fun的功能是:输出M×M整数方阵,然后求两条对角线上元素之和,并作为函数值返回。 请改正程序中的错误,使它能得出正确的结果。 注意:不得增行或删行,也不得更改程序的结构! 试题程序:#include<stdio.h>#define M 5/******found******/int fun(int n,int xx[][]){ int i,j,sum=0; printf(“\nTne%d x%d martrix\n”,M,M); for(i=0;i<M;i++) { for(j=0;j<M;j++)/******found******/ prinff(“%f”,XX[i][j]); prinff(“\n”); } for(i=0;i<rl;i++) 8am+=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,0l,{9,8,7,6,5},{3,4,5,6,7}};printf(“\nThe sum of all elements On 2 ai.gn.is is%d.”,fun(1Vl,aa));}
【正确答案】正确答案:(1)int fun(int n,int xx[][M]) (2)printf(“%d”,xx[i][j]);
【答案解析】解析:本题考查:函数定义形式;printf格式输出函数,注意其函数形式。 (1)当用数组作为函数的形参时,可以不定义数组的行数,但一定要定义数组的列数。 (2)该处错误比较隐蔽,一般C语言上机考试很少涉及printf函数中的错误,此处只要明白“d”和“f”的区别就可以了。格式字符d表示以带符号的十进制形式输出整数(正整数不输出符号);格式字符f表示以小数形式输出单精度、双精度数据,隐含输出6位小数。