全国计算机等级考试四级试题精练(2)

文章作者 100test 发表时间 2007:03:10 18:33:42
来源 100Test.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 200
int a[MAX], b[10].

void jsVal()
{


}

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) .
}


参考答案:

#include
#define MAX 200
int a[MAX], b[10].

void jsVal()
{
int i,j,k. /* j,k,i-循环变量 */
int iMax.
for(i=0.i<10.i ) /* 根据取数要求循环 */
{
iMax=0.
for(j=i*20.j<(i 1)*20.j ) if(iMaxb[i]=iMax.
for(j=0.j{
if(b[j]>iMax) /* 在b中寻找dt的位置 */
{
for(k=i.k>j.k--) b[k]=b[k-1]. /* 顺序移动 */
b[j]=iMax.
break.
}
}
}
}

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) .
}


本题评析:

  本题,是一道考察循环和数组排序的题目,通过20个一个平均一般可以安排两层循环,结合本题获得10个最大值的要求,在外层安排0-9的循环。
数组的排序一般可以使用冒泡和二分等算法排序,在本题目中,加入的因素是可以在获得数据后直接在数组中寻找到合适的位置,这样我们可以假设b已经是有序的数组,可以简化程序。



相关文章


数据库系统1-5:数据库技术的研究内容和进展
数据库系统1-6:数据库系统概述的本章小结
全国计算机等级考试四级试题精练(3)
数据库系统1-4:数据库系统的数据访问过程
全国计算机等级考试四级试题精练(2)
数据库系统1-4:数据库管理人员
全国计算机等级考试四级试题精练(4)
数据库系统1-4:计算机支持环境
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛