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

全国计算机等级考试四级试题精练(3),第1张

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

标题:
已知在in的数据文件中有200个四位数字。DAT,并且已经调用了读取函数readDat()将这些数字存储在数组A中,要求考生编译一个函数jsVal(),其作用是:从数组A的头开始,依次取每20个数字的值组成一个数字,这样就可以得到10个新的数字,存储在数组B中,然后将数组B中的数字从小到大排序。最后,main()函数调用writeDat()函数将结果B输出到OUT。DAT文件。
注意:部分源程序在PROG1文件中。C
已经在程序中定义了:a[200],bvoid read dat()
{
int I;
FILE * FP;
fp = fopen(in.dat,r);
for(I = 0;i < MAXi++) fscanf(fp,%d,& a[I]);
f close(FP);
}
不要更改数据文件中的任何数据。DAT,主函数main(),readDat()和writeDat()。

初始化程序:
# include
# define max 200
int a[max],b[10];
void jsVal()
{


}

void read dat()
{
int I;
FILE * FP;
fp = fopen(in.dat,r);
for(I = 0;i < MAXi++) fscanf(fp,%d,& a[I]);
f close(FP);
}

void main()
{
int I;
read dat();
jsVal();
for(I = 0;i < 10i++)
printf(b[%d]=%d\n,I,b[I]);
write dat();
}

write dat()
{
FILE * FP;
int I;
fp = fopen(out.dat,w);
for(I = 0;i < 10i++) fprintf(fp,%d\n,b[I]);
f close(FP);
}


参考答案:

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

void jsVal()
{
int i,j,k;/* j,k,i- loop变量*/
int iMax;
for(I = 0;I {
iMax = 0;
for(j = I * 20;jfor(j = 0;J{
if(b[j]>iMax) /*求dt在b */
{
for(k = I;k > j;k-)b[k]= b[k-1];/*顺序移动*/
b[j]= iMax;
break;
}
}
}
}

[10]

void main()
{
int I;
read dat();
jsVal();
for(I = 0;i < 10i++)
printf(b[%d]=%d\n,I,b[I]);
write dat();
}

write dat()
{
FILE * FP;
int I;
fp = fopen(out.dat,w);
for(I = 0;i < 10i++) fprintf(fp,%d\n,b[I]);
f close(FP);
}


关于此主题的评论:

本主题是研究循环和数组排序的主题。一般可以通过20个平均值排列两层循环。结合本题获取10个值的要求,外层可以布置0-9个循环。
数组一般可以用冒泡和二进制算法排序。在这个题目中,增加的因素是我们可以在获取数据后直接在数组中找到合适的位置,这样就可以假设B已经是一个有序数组,这样可以简化程序。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 全国计算机等级考试四级试题精练(3)

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情