问答题 1.  下列程序定义了M×M的二维数组,并在主函数中自动赋值。请编写函数fun(int arr[][M]),该函数的功能是:使数组左下半三角元素中的值全部置成0。
    例如,arr数组中的值为:
    1  2  3
    4  5  6
    7  8  9
    则返回主程序后arr数组中的值应为:
    0  2  3
    0  0  6
    0  0  0
    注意:部分源程序如下。
    请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。
    试题程序:
    #include<conio.h>
    #include<stdio.h>
    #include<stdlib.h>
    #include<time.h>
    #define M 5
    void proc(int arr[][M])
    {
    }
    void main()
    {
    int arr[M] [M],i,j;
    system("CLS");
    printf("****The array****\n");
    srand((unsigned)time(NULL));
    for(i=0;i<M;i++)
    //产生一个随机的5*5矩阵
    {
    for(j=0;j<M;j++)
    {
    arr[i][j]=rand()%10;
    printf("%4d",arr[i][j]);
    }
    printf("\n");
    }
    proc(arr);
    printf("THE RESULT\n");
    for(i=0;i<M;i++)
    {
    for(j=0;j<M;j++)
    printf("%4d",arr[i][j]);
    printf("\n");
    }
    }
【正确答案】void proc(int arr[][M])
   {
   int i,j;
   for(i=0;i<M;i++)    //i是控制行下标的
   for(j=0;j<=i;j++)//左下半三角是从下标为
   0开始的
   arr[i][j]=0;//把是左下半三角的数用0来
   代替
   }
【答案解析】 题目中要求使数组左下半三角元素中的值全部置成0。首先,要找到数组左下半三角元素;然后,将其置为0。二维数组左下半三角元素的特点为,行下标大于等于列下标。根据此特点找出二维数组中所有的左下半三角元素,最后,将这些位置上的元素均置为0。