改错题 1.  下列给定程序中,函数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<3;j++)”;二维数组主对角线上元素的两个下标是相等的,因此,“mul=mul*arr[i][j];”应改为“mul=mul*arr[i][i];”。