问答题
下列给定程序中,函数fun的功能是:输出M×M整数方阵,然后求两条对角线上元素之和,并作为函数值返回。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include<stdlib.h>
#include<conio.h>
#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(j=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);
}
void 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}};
system("CLS");
printf("/nThe sum of all elements on 2 diagnals is%d",fun(M,aa));
}
【正确答案】
【答案解析】int fun(int n,int xx[][M])
printf("%d",xx[i][j]);
[考点]
本题关键字有:函数定义;printf格式输出函数。printf函数一般形式为:printf("格式控制字符串",输出表列),格式控制字符串以%开头,后跟各种格式字符,说明输出数据的形式、类型、长度等。如d%表示按十进制整型输出,%ld表示按十进制长整型输出,非格式字符串原样输出。
[解析]
(1)函数的形参为数组时,数组的行数可以不给出,但列数一定要给出。
(2)格式字符d表示以带符号的十进制形式输出整数(正整数不输出符号);格式字符f表示以小数形式输出单精度、双精度数据,隐含输出6位小数。