C语言模块化测试的成绩下来了,我通过了,一共三道题,对了两道半,审题不认真这个病真是太致命了。 上次说了个改错,这次说编程题。
题:
代码语言:javascript复制/*
下列程序定义了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();
printf("M", a[i][j]);
}
printf("n");
}
fun(a);
printf("THE RESULTn");
for(i=0;i<N;i )
{ for(j=0;j<N;j )
printf("M",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,"M",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,写的比较麻烦了,故就不拿出来献丑了。