全国计算机等级考试四级考试上机题 1
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 |