我抽到下面这一题目:已知数据文件IN.DAT中存有10组每组20个四位数的数据, 每个数据间用空格分隔,并已调用读函数readDat()把这10组数据存入数组aa中(其中,aa定义为int aa[10][20]),请考生编制一函数jsVal(), 其功能是: 首先计算每组中的数的最大值和最小值的算术平均值,然后取每组小于其算术平均值的最大一个四位数依次存入数组bb中(其中,数组bb定义为int bb[10],其中bb[0]为第一组中符合条件的数,bb[1]为第二组中符合条件的数,其它依此类推),最后调用输出函数writeDat()把结果bb输出到文件OUT.DAT中。
注意: 部分源程序存在文件PROG1.C文件中。
程序中已定义全局变量: aa[10][20]、bb[10]
请勿改动数据文件IN.DAT中的任何数据、主函数main()、读函数readDat()和写函数writeDat()的内容。
#include <stdio.h>
int aa[10][20] ;
int bb[10];
void jsVal()
{ int i,j,max1,max2,min,cnt;
double aver;
for(i=0;i<10;i++)
{ min=9999; max1=max2=0;
for(j=0;j<20;j++)
{ if(aa[j]>max1) max1=aa[j];
if(aa[j]<min) min=aa[j];
}
aver=(double)(max1+min)/2.0;
for(j=0;j<20;j++)
if(aa[j]<aver&&aa[j]>max2) max2=aa[j];
bb=max2;
}
}
/* 以下函数均无需修改 */
void readDat()
{
int i, j ;
FILE *fp ;
fp = fopen("D:\\EXAM\\40010001\\in.dat", "r") ;
for(i = 0 ; i < 10 ; i++)
for(j = 0 ; j < 20 ; j++) fscanf(fp, "%d", &aa[j]) ;
fclose(fp) ;
}
void main()
{
int i ;
readDat() ; /* 读数据 */
jsVal() ; /* 按要求计算 */
for(i = 0 ; i < 10 ; i++) /* 从屏幕输出结果 */
printf("%d\n", bb) ;
writeDat() ; /* 输出结果到文件 */
}
writeDat()
{
FILE *fp ;
int i ;
fp = fopen("D:\\EXAM\\40010001\\out.dat", "w") ;
for(i = 0 ; i < 10 ; i++)
fprintf(fp, "%d\n", bb) ;
fclose(fp) ;
}
输入文件in.dat仍是第一题的
输出文件out.dat为:
4603
4365
4187
4968
4984
4967
3229
4824
5049
4433
[em05][em05][em05][em05][em05][em05][em05][em05][em05][em05]
看来这道题挺普遍的,哈哈!
[em01][em01][em01][em01][em01][em01][em01] 我过!!!!!!!!!了!!!!!!!!