问答题 下列给定程序中,函数proc()的功能是:先从键盘上输入一个3行3列的矩阵的各个元素的值,然后输出主对角线元素之和。
例如:输入1 2 3 4 5 6 7 8 9,则矩阵为
1 2 3
4 5 6
7 8 9
输出为Sum=15。
请修改函数proc()中的错误,使它能得出正确的结果。
注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include<stdio.h>
void proc()
{
int arr[3][3], sum;
int i, j;
//****found****
sum=1;
printf("please input 3*3 array: /n");
for(i=0; i<3; i++)
{
for(j=0; j<3; j++)
//****found****
scanf("%d", arr[i][j]);
}
for(i=0; i<3; i++)
sum=sum+arr[i][i];
printf("Sum=%d/n", sum);
}
void main()
{
proc();
}
【正确答案】
【答案解析】(1)错误:sum=1;
正确:sum=0;
(2)错误:scanf("%d", arr[i][j]);
正确:scanf("%d", &arr[i][j]); [解析] 由函数proc()可知,变量sum中存放的是矩阵主对角线元素之和。其初始值应该为0,因此,“sum=1;”应改为“sum=0;”。在C语言当中,scanf为格式化输入,变量应该要带地址符。因此,“scanf("%d", arr[i][j]);”应改为“scanf("%d", &arr[i][j]);”。