问答题 下列程序定义了M×M的二维数组,并在主函数中自动赋值。请编写函数fun(int arr[][M]),该函数的功能是使数组左下半三角元素中的值全部置成0。例如,arr数组中的值为:
1 2 3
arr=4 5 6
7 8 9
则返回主程序后arr数组中的值应为:
0 2 3
arr=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");
stand((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。