问答题
下列程序定义了N×N的二维数组,并在主函数中自动赋值。请编写函数fun(int a[][N]),该函数的功能是:将数组左下半三角元素中的值全部置成0。例如a数组中的值为:1 9 72 3 84 5 6则返回主程序后a数组中的值应为:0 9 70 0 80 0 0 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 试题程序:#include<conio.h>#include<stdio.h>#include<stdlib.h>#define N 5 void fun(int a[][N]){}void main(){ int a[N][N],i,j; system("CLS"); printf("****The array****\n"); for(i=0;i<N;i++) /*产生一个随机的5*5矩阵*/ { for(j=0;j<N;j++) { a[i][j]=rand()%10; printf("%4d",a[i][j]); } printf("\n"); } fun(a); printf("THE RESULT\n"); for(i=0;i<N;i++) { for(j=0;j<N;j++) printf("%4d",a[i][j]); printf("\n"); }}
【正确答案】正确答案:void fun(int a[][N]) { int i,j; for(i=0;i<N;i++) for(j=0;j<=i;j++) a[i][j]=0; /*将数组左下半三角元素中的值全部置成0*/ }
【答案解析】解析:对于N×N二维数组,如何表示其左下半三角元素,可以通过以下语句实现。 for(i=0 ;i<n;i++) for(j=0;j<=i;j++) 外层循环用来控制矩阵的行下标,内层循环控制矩阵的列下标。注意列下标的取值范围,因为要表示下三角元素,所以j的范围是0~i。