2006年9月全国计算机等级考试四级上机试题计算机等级考试
文章作者 100test 发表时间 2009:04:10 01:31:56
来源 100Test.Com百考试题网
机试一:
考试时间:9月23日 15:30
抽到题目:已知数据文件IN.DAT中存有200个两位数且相邻的两个数之间均不相等,并已调用函数readDat()把这些数存入数组b中,请考生编制一个函数jsVal(),实现的功能是对经常上下波动的数据可采用只记录峰值的数据压缩方法,即每次将采样到的当前值和前一次值比较,如数据变化方向改变(原递增现递减或原递减现递增),说明已过峰值,这时就将当前值记录下来,接着将结果依次存入数据b中(从0开始存放),注意数组b中的第一个数据a[0]原样存入b[0]单元中。最后调用输出函数writeDat()把结果c输出到文件OUT.DAT中。
例如:原数据: 35,69,87,73,62,54,60,70,......
压缩后: 35,73,60,......
注意:部分源程序存在文件PROG1.C文件中。程序中已定义:a[200]、b[200]。
请勿改动数据文件IN.DAT中的任何数据、主函数main()、读函数readDat()和写函数writeDat的内容。
补充函数:
void jsVal()
{ int i.
b[0]=a[0].cnt=1.
for(i=1.i
if((a>.a[i-1]&.&.a>.a[i 1])||(a}
机试二:
考试时间:9月23日 15:00
已知在文件IN.DAT中存有N个实数(N<.200), 函数ReadDat( )是读取这N个实数并存入数组xx中。请编制函数CalValue( ), 其功能要求:
1.求出这N个实数的平均值aver.
2.分别求出这N个实数中大于平均值aver的实数的整数部分值之和sumint以及该实数的小数部分值之和sumdec, 最后调用函数WriteDat()把所求的结果输出到文件OUT2.DAT中。
注意: 部分源程序存放在PROG1.C中。
请勿改动主函数main( )、读数据函数ReadDat()和输出数据函数WriteDat()的内容。
void CalValue(void)
{
int i .
long val .
for(i = 0 . i <. N . i )
aver = xx .
aver /= (double) N .
for(i = 0 . i <. N . i ) {
if(xx >. aver) {
val = (long) xx .
sumint = val .
sumdec = (xx - val) .
}
}
}
机试三:
考试时间:9月23日 14:00
抽到题目:已知在文件IN.DAT中存有10x20个实数, 并已通过函数ReadDat( )数组aa[10][20]中。请编制函数jsVal(), 其功能要求:
1.分别剔除每行的第一个和最后一个数,求出剩余18个数的平均值存入数组bb[10]中.
2.将bb[10]中的数按从达到小顺序排列,结果仍存入bb[10]中。 最后调用函数WriteDat()把所求的结果输出到文件OUT.DAT中。
注意: 部分源程序存放在PROG1.C中。
请勿改动主函数main( )、读数据函数ReadDat()和输出数据函数WriteDat()的内容。
int aa[10][20].
float bb[10].
void jsVal()
{
int i,j.
float a.
for(i=1.i<.=10.i )
{
bb=0.
for(j=1.j<.=19,j )
bb =aa[j].
bb/=18.
}
for(i=1.i<.10.i )
for(j=1.j<.=10-i.j )
if(bb
{
a=bb[j].
bb[j]=bb[j-1].
bb[j-1]=a.
}.
}
机试四:
1.已知数据文件IN.DAT中存有10组每组20个四位数的数据, 每个数据间用空格分隔,并已调用读函数readDat()把这10组数据存入数组aa中(其中,aa定义为int aa[10][20]),请考生编制一函数jsVal(), 其功能是: 首先计算每组中的数属于奇数的算术平均值,然后取每组小于其算术平均值的最大一个四位数依次存入数组bb?其中,数组bb定义为int bb[10],其中bb[0]为第一组中符合条件的数,bb[1]为第二组中符合条件的数,其它依此类推),最后调用输出函数writeDat()把结果bb输出到文件OUT.DAT中。
注意: 部分源程序存在文件PROG1.C文件中。程序中已定义全局变量: aa[10][20]、bb[10]
请勿改动数据文件IN.DAT中的任何数据、主函数main()、读函数readDat()和写函数writeDat()的内容。
void jsVal()
{ int i,j,max,cnt.
double aver.
for(i=0.i<.10.i )
{ aver=0.0. cnt=0. max=0.
for(j=0.j<.20.j )
if(aa[j]%2) { cnt . aver =aa[j].}
if(cnt==0) aver=0.0.
else aver/=(double)cnt.
for(j=0.j<.20.j )
if(aa[j]max) max=aa[j].
bb=max.
}