概要:IN.DAT中的任何数据、主函数main()、读函数readDat()和写函数writeDat()的内容。*/#include #define MAX 200int a[MAX];double b[10] ;void jsVal(){/**/int i,j,k=0; double t;for(i=0; i 《 10; i++){ b[i]=a[k++];for(j=1; j 《 MAX/10; j++)b[i]+=a[k++];b[i]/=MAX/10;}for(i=0; i 《 9; i++){ k=i;for(j=i+1; j 《 10; j++)if(b[k] 《 b[j]) k=j;if(k!=i){ t=b[i]; b[i]=b[k]; b[k]=t;}}/**/}void readDat(){ www.jdxx5.com int i ;FILE *fp ;fp = fopen(“in.dat”, “r”) ;for(i = 0 ; i 《 MAX ; i++) fscanf(fp, “%d”, &a[i]) ;fclose(fp)
2011年全国计算机四级考试上机试题(9),http://www.jdxx5.com已知数据文件IN.DAT中存有200个四位数, 并已调用读函数readDat()把这些数存入数组a中,请考生编制一函数jsVal(),其功能是:从数组a的头开始,依次每20个数的平均值组成一个新数,这样可以获得10个新数并存入数组b中,接着把数组b中的数按从大到小的顺序重新存入数组b中。最后main( )函数调用写函数writeDat()把结果b输出到OUT.DAT文件中。
注意: 部分源程序存在文件PROG1.C文件中。
程序中已定义: a[200]、b[10]
请勿改动数据文件IN.DAT中的任何数据、主函数main()、读函数readDat()和写函数writeDat()的内容。*/#include #define MAX 200int a[MAX];double b[10] ;void jsVal(){/**/
int i,j,k=0; double t;
for(i=0; i 《 10; i++)
{ b[i]=a[k++];
for(j=1; j 《 MAX/10; j++)
b[i]+=a[k++];
b[i]/=MAX/10;
}
for(i=0; i 《 9; i++)
{ k=i;
for(j=i+1; j 《 10; j++)
if(b[k] 《 b[j]) k=j;
if(k!=i)
{ t=b[i]; b[i]=b[k]; b[k]=t;}
}/**/}void readDat(){
www.jdxx5.com
int i ;
FILE *fp ;
fp = fopen(“in.dat”, “r”) ;
for(i = 0 ; i 《 MAX ; i++) fscanf(fp, “%d”, &a[i]) ;
fclose(fp) ;}void main(){
int i ;
readDat() ;
jsVal() ;
for(i = 0 ; i 《 10 ; i++)
printf(“b[%d]=%7.2lf\n”, i, b[i]) ;
writeDat() ;}writeDat(){
FILE *fp ;
int i ;
fp = fopen(“out.dat”, “w”) ;
for(i = 0 ; i 《 10 ; i++) fprintf(fp, “%7.2lf\n”, b[i]) ;
fclose(fp) ;}