2002年全国计算机等级考试四级考试上机题 1、 已知数据文件IN.DAT中存有200个四位数, 并已调用读函数readDat()把这些数存入数组a中,请考生编制一函数jsVal(),其功能是:将第1个数与第200个数进行比较, 若两数不等, 则取较大者作为下列统计用的符合条件数,若两数相等, 则不作为符合条件数; 将第2个数与第199个数进行比较,若两数不等, 则同样取较大者, 若两数相等, 则同样不作为符合条件数; 直至第100个数与第101个数比较为止, 接着计算出这些符合条件数中的最小值min、最大值max以及这些符合条件数的平均值aver。最后main()函数调用写函数writeDat()把结果输出到OUT.DAT文件中。 注意: 部分源程序存在文件PROG1.C文件中。 程序中已定义: a[200]、min、max、aver 请勿改动数据文件IN.DAT中的任何数据、主函数main()、 读函数readDat()和写函数writeDat()的内容。 */#include #define MAX 200int a[MAX], min, max;double aver ; void jsVal() { int b[MAX/2], i, n=0; for(i = 0; i < MAX/2; i++) if(a[i]!=a[MAX-i-1]) b[n++] = a[i] > a[MAX-i-1] ? a[i] : a[MAX-i-1]; max=min=b[0]; aver=b[0]; for(i = 1; i < n; i++) { aver+=b[i]; if(b[i] > max) max=b[i]; else if(b[i] < min) min=b[i]; } aver=aver/n;/**/}void readDat(){ int i ; FILE *fp ; fp = fopen("in.dat", "r") ; for(i = 0 ; i < MAX ; i++) fscanf(fp, "%d", &a[i]) ; fclose(fp) ;}void main(){ readDat() ; jsVal() ; printf("结果min=%d,max=%d,aver=%6.2lf\n", min, max, aver) ; writeDat() ;}writeDat(){ FILE *fp ; fp = fopen("out.dat", "w") ; fprintf(fp, "%d\n%d\n%6.2lf\n", min, max, aver) ; fclose(fp) ;} 2、已知数据文件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], b[10];void jsVal(){/**/ int i,j,k=0,t; for(i=0; i < 10; i++) { b[i]=a[k++]; for(j=1; j < 20; j++,k++) if(b[i] > a[k]) b[i]=a[k]; } for(i=0; i < 9; i++) { k=i; for(j=i+1; j < 10; j++) if(b[j] > b[k]) k=j; if(k!=i){t=b[i]; b[i]=b[k]; b[k]=t;} }/**/}void readDat(){ 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]=%d\n", i, b[i]) ; writeDat() ;}writeDat(){ FILE *fp ; int i ; fp = fopen("out.dat", "w") ; for(i = 0 ; i < 10 ; i++) fprintf(fp, "%d\n", b[i]) ; fclose(fp) ;} 3、已知数据文件IN.DAT中存有200个四位数, 并已调用读函数readDat()把这些数存入数组a中,请考生编制一函数jsVal(),其功能是:将第1个数减第200个数, 若差值大于零, 则取差值作为下列统计用的符合条件数,若差值小于等于零, 则差值不作为符合条件数; 将第2个数减第199个数,若差值大于零, 则同样取差值, 若差值小于等于零, 则差值同样不作为符合条件数;直至第100个数减第101个数为止,接着统计出这些符合条件数中的最大5个不重复的数按从大到小顺序存入数组b中。最后main( )函数调用写函数writeDat()把结果b输出到OUT.DAT文件中。 注意: 部分源程序存在文件PROG1.C文件中。 程序中已定义: a[200]、b[5] 请勿改动数据文件IN.DAT中的任何数据、主函数main()、读函数readDat()和写函数writeDat()的内容。*/#include #define MAX 200int a[MAX], b[5];void jsVal(){/**/ int t[MAX/2],i,j,k=0,tt; for(i=0; i < MAX/2; i++) { tt=a[i]-a[MAX-i-1]; if(tt>0) t[k++]=tt; } for(i=0; i < 5; i++) b[i]=0; for(i=0; i < k; i++) if(b[0] < t[i]) b[0]=t[i]; for(j=1; j < 5; j++) for(i=0; i < k; i++) if(t[i]>b[j] && t[i] < b[j-1]) b[j]=t[i];/**/}void readDat(){ 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 < 5 ; i++) printf("b[%d]=%d\n", i, b[i]) ; writeDat() ;}writeDat(){ FILE *fp ; int i ; fp = fopen("out.dat", "w") ; for(i = 0 ; i < 5 ; i++) fprintf(fp, "%d\n", b[i]) ; fclose(fp) ;} 4、 已知数据文件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<20; j++) b[i]+=a[k++]; b[i]/=20; } 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[k]; b[k]=b[i]; b[i]=t;} }/**/}void readDat(){ 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) ;} 5、已知数据文件IN.DAT中存有200个四位数, 并已调用读函数readDat()把这些数存入数组a中, 请考生编制一函数jsVal(),其功能是: 将第1个数减第200个数, 若差值小于零, 则取差值的绝对值作为下列统计用的符合条件数, 若差值大于等于零, 则差值不作为符合条件数; 将第2个数减第199个数, 若差值小于零, 则同样取差值的绝对值, 若差值大于等于零, 则差值同样不作为符合条件数;直至第100个数减第101个数为止,接着计算出这些符合条件数中的最小值min、最大值max以及这些符合条件数的平均值aver。最后main()函数调用写函数writeDat()把结果输出到文件OUT.DAT中。 注意: 部分源程序存在文件PROG1.C文件中。 程序中已定义: a[200]、min、max、aver 请勿改动数据文件IN.DAT中的任何数据、主函数main()、读函数readDat()和写函数writeDat()的内容。*/#include #define MAX 200int a[MAX], min, max;double aver ;void jsVal(){/**/ int b[MAX/2],t,i,k=0; for(i=0; i < MAX/2; i++) { t=a[i]-a[MAX-i-1]; if(t < 0) b[k++]=-t; } max=min=b[0]; aver=b[0]; for(i=1; i < k; i++) { aver+=b[i]; if(max < b[i]) max=b[i]; else if(min > b[i]) min=b[i]; } aver/=k;/**/}void readDat(){ int i ; FILE *fp ; fp = fopen("in.dat", "r") ; for(i = 0 ; i < MAX ; i++) fscanf(fp, "%d", &a[i]) ; fclose(fp) ;}void main(){ readDat() ; jsVal() ; printf("结果min=%d,max=%d,aver=%6.2lf\n", min, max, aver) ; writeDat() ;}writeDat(){ FILE *fp ; fp = fopen("out.dat", "w") ; fprintf(fp, "%d\n%d\n%6.2lf\n", min, max, aver) ; fclose(fp) ;} 6、 已知数据文件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], b[10];void jsVal(){/**/ int i,j,k=0; for(i=0; i < 10; i++) { b[i]=a[k++]; for(j=1; j < MAX/10; j++,k++) if(b[i]>a[k]) b[i]=a[k]; } for(i=0; i < 9; i++) for(j=i+1; j < 10; j++) if(b[i] < b[j]) { k=b[i]; b[i]=b[j]; b[j]=k;}/**/}void readDat(){ 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]=%d\n", i, b[i]) ; writeDat() ;}writeDat(){ FILE *fp ; int i ; fp = fopen("out.dat", "w") ; for(i = 0 ; i < 10 ; i++) fprintf(fp, "%d\n", b[i]) ; fclose(fp) ;} 7、 已知数据文件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(){ 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) ;} 8、 已知数据文件IN.DAT中存有200个四位数, 并已调用读函数readDat()把这些数存入数组a中,请考生编制一函数jsVal(),其功能是:将第1个数与第200个数进行比较, 若两数不等, 则取较小者作为下列统计用的符合条件数,若两数相等, 则不作为符合条件数; 将第2个数与第199个数进行比较,若两数不等, 则同样取较小者, 若两数相等, 则同样不作为符合条件数; 直至第100个数与第101个数比较为止, 接着计算出这些符合条件数中的最小值min、最大值max以及这些符合条件数的平均值aver。最后main()函数调用写函数writeDat()把结果输出到OUT.DAT文件中。 注意: 部分源程序存在文件PROG1.C文件中。 程序中已定义: a[200]、min、max、aver 请勿改动数据文件IN.DAT中的任何数据、主函数main()、读函数readDat()和写函数writeDat()的内容。*/#include #define MAX 200int a[MAX], min, max;double aver ;void jsVal(){/**/ int i,j,m,k=0; min=9999; max=0; aver=0.0; for(i=0; i < MAX/2; i++) if(a[i]!=a[MAX-i-1]) { k++; m=a[i]>a[MAX-i-1]?a[MAX-i-1]:a[i]; aver+=m; if(max < m)max=m; else if(min>m) min=m; } aver/=k;/**/}void readDat(){ int i ; FILE *fp ; fp = fopen("in.dat", "r") ; for(i = 0 ; i < MAX ; i++) fscanf(fp, "%d", &a[i]) ; fclose(fp) ;}void main(){ readDat() ; jsVal() ; printf("结果min=%d,max=%d,aver=%6.2lf\n", min, max, aver) ; writeDat() ;}writeDat(){ FILE *fp ; fp = fopen("out.dat", "w") ; fprintf(fp, "%d\n%d\n%6.2lf\n", min, max, aver) ; fclose(fp) ;} 9、 已知数据文件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(){ 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) ;} 10、已知数据文件IN.DAT中存有200个四位数, 并已调用读函数readDat()把这些数存入数组a中, 请考生编制一函数jsVal(),其功能是: 将第1个数减第200个数, 若差值小于零, 则取差值的绝对值作为下列统计用的符合条件数, 若差值大于等于零, 则差值不作为符合条件数; 将第2个数减第199个数, 若差值小于零, 则同样取差值的绝对值, 若差值大于等于零, 则差值同样不作为符合条件数;直至第100个数减第101个数为止,接着计算出这些符合条件数中的最小值min、最大值max以及这些符合条件数的平均值aver。最后main()函数调用写函数writeDat()把结果输出到文件OUT.DAT中。 注意: 部分源程序存在文件PROG1.C文件中。 程序中已定义: a[200]、min、max、aver 请勿改动数据文件IN.DAT中的任何数据、主函数main()、读函数readDat()和写函数writeDat()的内容。*/#include #define MAX 200int a[MAX], min, max;double aver ;void jsVal(){/**/ int i,t,k=0; max=0; min=10000; aver=0.0; for(i=0; i < MAX/2; i++) { t=a[i]-a[MAX-i-1]; if(t < 0) { t=-t; k++; aver+=t; if(max < t) max=t; else if(min>t) min=t; } } aver/=k;/**/}void readDat(){ int i ; FILE *fp ; fp = fopen("in.dat", "r") ; for(i = 0 ; i < MAX ; i++) fscanf(fp, "%d", &a[i]) ; fclose(fp) ;}void main(){ readDat() ; jsVal() ; printf("结果min=%d,max=%d,aver=%6.2lf\n", min, max, aver) ; writeDat() ;}writeDat(){ FILE *fp ; fp = fopen("out.dat", "w") ; fprintf(fp, "%d\n%d\n%6.2lf\n", min, max, aver) ; fclose(fp) ;} 试题的 in.dat内容如下: 4452 1759 8634 9976 7503 2101 5246 6780 1518 6955 3466 8383 1778 4777 4443 3364 2262 3649 3366 5528 6840 7227 8590 9496 3512 5638 2412 5909 2975 8025 2359 5368 3539 3559 2322 5307 1757 8645 8872 6227 4357 8379 5715 9782 8205 1063 3211 2201 4307 2357 9703 1076 5551 7158 4462 5589 1137 4051 3485 9751 8662 2134 1190 8025 1065 4059 9698 8098 6927 8155 9476 5088 6359 5573 5993 5606 9624 3380 2122 5129 9554 7098 3070 8601 7205 9551 9218 2082 1284 4013 8447 1275 6488 5778 9290 7853 3538 6167 5442 2097 1720 8296 3250 7649 8223 2250 4367 8818 7696 4567 2856 9316 8359 6136 5012 6032 6291 1827 7026 8704 4189 7396 4088 2106 3918 4019 8802 6084 5890 1426 4261 1041 2554 1599 4124 4615 1566 2010 2881 5854 9694 6913 4927 5571 2121 8576 5074 7410 9248 3526 7614 7273 8044 2410 5872 9607 9017 7871 1835 6878 6307 5718 3949 1697 8033 6158 6838 9178 6320 5899 1363 5611 4709 1560 8051 6204 6920 4488 6106 7848 1638 5460 5160 7848 3035 2668 1975 4539 1697 1452 9266 5644 9203 8847 5953 6143 3889 6280 8335 7988
|