计算机等级考试:机试考前六大过关方法(一)

发布于 2018-07-27 09:02  编辑:jokex
0
计算机等级考试题库 扫码微信刷题

小编所收集到的相关计算机等级考试:机试考前必看的六大过关方法的资料 大家要认真阅读哦!



第一条:审题要仔细!

正式考试的时候会遇到很多面熟的题目,这些题目有的似乎和平常资料中看到的一样,然而,千万不要见到面熟的题目而沾沾自喜,因为有很多的“陷阱”会使你审题的时候就出错!

我们看一道所有人都做过的的 “数字题目” .

考试中心命题组第23题:

已知在文件in.dat中存有N个实数,(N<200),函数readdat()是读取这N个实数并存入数组xx中。

请编制函数CalValue(),其功能要求:

1、求出这N个实数的整数部分平均值aver;

2、分别求出这N个实数中其整数部分值小于平均值ever的数的整数部分值之和sumint与小数部分之和sumdec

最后调用函数WriteDat()把所求的结果输出到文件OUT8.dat中。

这一题看起来很眼熟,然而你仔细看!

1、aver是整数部分的平均值!不是普通的哦!

2、整数部分值小于平均值ever的数的整数部分值之和sumint与小数部分之和sumdec!

原来这么复杂!稍不留心就错了,结果就想当然的0分

考试中心命题组第4题

函数ReadDat()实现从文件ENG.IN中读取一篇英文文章存入到字符

串数组xx中;请编制函数ComWord()分别计算出10个不区分大小写

的英文单词的首字母(b,c,f,s,n,r,u,e,o,p)的频数并依次存入

整型数组yy[0]至yy[9]中,最后调用函数WriteDat( )把结果yy

输出到文件PS1.OUT中。

这题也很眼熟,然而你仔细看!

英文单词的首字母,不是平常的字母的个数,是作为单词的首字母的个数啊。

上面两道题目并没有在其他资料上见过,考试的时候也不一定会出,这里仅仅是给大家提个醒儿,正式考试一定要仔细审题,严格按照题目的要求去做,不要受以前做过的题目的影响。


第二条:一定要考虑除零、溢出、类型转换、精度等细节问题!

虽然我们在平时学C语言的时候老师都提醒过,可是真正到了编程序的时候,却没有几个人会考虑。这些细节问题似乎并不直接影响题目的输出结果,然而,因为溢出和类型转换错误而造成考试得不到满分的可是大有人在啊! 我们看下面一道最害人的题目!,很多朋友考了这道题目都没有过。

下面来看看你为什么是0分!

考试中心命题组64题:

请编制函数encryptChar(),按给定的替代关系对数组xx中的所有字符进行替代,

仍存入数组xx的对应的位置上,最后调用函数WriteDat()把结果xx输出到文件PS8.DAT中。

替代关系:f(p)=p*11 mod 256 (p是数组中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),

如果原字符小于等于32或大于130,则该字符不变,否则将f(p)所对应的字符进行替代。

这道题目所有的人都做过,但几乎就没有人做对,包括南开无忧在内!

原因就在于这一句!

无忧:int f; f=(xx[i][k]*11)%6;

南开:char *pf; *pf=*pf*11%6;

表面看来,好象两个都对,

请你在TC下运行一下下面的代码,看一下结果你就知道了是怎么回事了:

main()

{

char nk='E',*nkp,wuyou='E';

int wy;

nkp=&nk;

*nkp=*nkp*11%6;

wy=wuyou*11%6;

printf(“%c %c %c %c\n”,nk,*nkp,wuyou,wy);

printf(“%d %d %d %d\n”,nk,*nkp,wuyou,wy);

}

看到结果了么?是不是很吃惊啊?

-9 -9 69 247

大家看到了,南开的结果是负数,连原来的变量nk都变成了负数,这显然错了。

无忧的聪明一点,知道int比char大,定义了个int,对了。

南开错误原因就是在TC2.0中char型变量只有一个字节,根本容纳不下‘E'*11,

所以产生了溢出,上次考这道题目没过的同学是不是有所启发呢?

这里给出考试中心命题组的答案:

void encryptChar(){

int i,k,ch;

for(i=0;i for(k=0;k ch=xx[i][k];

ch=(ch*11)%6;

if(!(ch<=32||ch>=130))xx[i][k]=ch;

}

}

似乎一个例子不能说明什么,那就把上面的数字题目的答案给大家看看:

考试中心命题组23题答案:

int i;

long val;

float dec;

for(i=0;i val=(long)xx[i];

aver+=xx[i]-val;

}

aver/=(double)N;

for(i=0;i val=(long)xx[i];

dec=xx[i]-val;

if(dec>aver){

sumint+=val;

sumdec+=(xx[i]-val);

}

}

看到了吧,首先,val的定义,不是我们习惯的int,而是能容纳更大数的 long ,

这样在求和的时候就不会溢出,无忧和南开的答案没有吧

再看,算aver平均值的细节,不是我们平常习惯的aver/=N,更不是无忧的1.0* sum/N,

而是aver/=(double)N,所以大家在考试的时候要时刻注意你的变量类型,特别是在一些求平均值的题目中,千万要注意,用sum/n的时候,sum的类型一定不要用整形。




想要继续了解?点击下方链接,进入考无忧官方网站,更多精彩等你来!


文章推荐:

2018年全国计算机等级考试都有哪些科目?

2018年全国计算机考试报名为什么照片上传不成功?

2018年全国计算机等级考试一二三四级最新考试大纲汇总


温馨提示:

想要了解更多试题请点击查看>>>计算机考试题库

考试想拿高分吗?更多ms office相关资讯请点击查看>>>二级ms office

想知道更多关于计算机等级考试的最新资讯吗?点击进入>>>计算机等级考试


本文网址:http://www.k51.com.cn/info/jsjdjks/1807/2741860.html
选择分享到: