C语言模块化测试的成绩下来了,我通过了,一共三道题,对了两道半,审题不认真这个病真是太致命了。
上次说了个改错,这次说编程题。

题:

/*
下列程序定义了N×N的二维数组,并在主函数中自动赋值。请编写函数fun(int a[][N]),该函数的功能是:将数组左下半三角元素中的值全部置成0。例如a数组中的值为:
1  9  7
2  3  8
4  5  6
则返回主程序后a数组中的值应为:
0  9  7
0  0  8
0  0  0
注意:部分源程序在文件PROG1.C中。
请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
*/
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#define N 5
void fun (int a[][N])
{
}
void main()
{ 
  FILE *wf;
  int a[N][N],i,j;
  int b[N][N]={1,9,7,2,4,2,3,8,1,2,4,5,6,7,5,4,0,6,8,0,2,7,1,6,4};
  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");
     }
/******************************/
  wf=fopen("out.dat","w");
  fun(b);
  for(i=0;i<N;i++)
     { for(j=0;j<N;j++) 
          fprintf(wf,"%4d",b[i][j]);
       fprintf(wf,"\n");
     }
  fclose(wf);
/*****************************/
}

答fun函数部分:

void fun (int a[][N])
{
   int i,j;
   for(i=0;i<N;i++)
     for(j=0;j<=i;j++)
        a[i][j]=0;  
}

这个是标准答案,我写的是两个for加个if,写的比较麻烦了,故就不拿出来献丑了。