问题 填空题

下列给定程序中,函数proc()的功能是:先从键盘上输入一个3行3列的矩阵的各个元素的值,然后输出主对角线元素之积。
请修改函数proc()中的错误,使它能得出正确的结果。
注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include<stdio.h>
void proc()

int arr[3][3], mul;
int i, j;
mul=1;
printf("please input an 3*3 array: \n");
for(i=0; i<3; i++)

//************found************
for(i=0; j<3; j++)
scanf("%d", &arr[i][j]);

for(i=0; i<3; i++)
//************found************
mul=mul*arr[i][j];
printf("Mul=%d\n", mul);

void main()

proc();

答案

参考答案:(1)错误:for(i=0; j<3; j++) 正确:for(j=0; j<3; j++)
(2)错误:mul=mul*arr[i][j]; 正确:mul=mul*arr[i][i];

解析: 由函数proc可知,变量i,j分别表示二维数组的行和列,从键盘输入二维数组的元素是按行输入的。因此for(i=0; j<3; j++)应改为for(j=0; j<a; j++);二维数组主对角线上元素的两个下标是相等的,因此mul=mul*arr[i][j];应改为mul=mul*arr[i][i]。

单项选择题
名词解释