首页 考试吧论坛 Exam8视线 考试商城 网络课程 模拟考试 考友录 实用文档 求职招聘 论文下载
2011中考 | 2011高考 | 2012考研 | 考研培训 | 在职研 | 自学考试 | 成人高考 | 法律硕士 | MBA考试
MPA考试 | 中科院
四六级 | 职称英语 | 商务英语 | 公共英语 | 托福 | 雅思 | 专四专八 | 口译笔译 | 博思 | GRE GMAT
新概念英语 | 成人英语三级 | 申硕英语 | 攻硕英语 | 职称日语 | 日语学习 | 法语 | 德语 | 韩语
计算机等级考试 | 软件水平考试 | 职称计算机 | 微软认证 | 思科认证 | Oracle认证 | Linux认证
华为认证 | Java认证
公务员 | 报关员 | 银行从业资格 | 证券从业资格 | 期货从业资格 | 司法考试 | 法律顾问 | 导游资格
报检员 | 教师资格 | 社会工作者 | 外销员 | 国际商务师 | 跟单员 | 单证员 | 物流师 | 价格鉴证师
人力资源 | 管理咨询师考试 | 秘书资格 | 心理咨询师考试 | 出版专业资格 | 广告师职业水平
驾驶员 | 网络编辑
卫生资格 | 执业医师 | 执业药师 | 执业护士
会计从业资格考试会计证) | 经济师 | 会计职称 | 注册会计师 | 审计师 | 注册税务师
注册资产评估师 | 高级会计师 | ACCA | 统计师 | 精算师 | 理财规划师 | 国际内审师
一级建造师 | 二级建造师 | 造价工程师 | 造价员 | 咨询工程师 | 监理工程师 | 安全工程师
质量工程师 | 物业管理师 | 招标师 | 结构工程师 | 建筑师 | 房地产估价师 | 土地估价师 | 岩土师
设备监理师 | 房地产经纪人 | 投资项目管理师 | 土地登记代理人 | 环境影响评价师 | 环保工程师
城市规划师 | 公路监理师 | 公路造价师 | 安全评价师 | 电气工程师 | 注册测绘师 | 注册计量师
缤纷校园 | 实用文档 | 英语学习 | 作文大全 | 求职招聘 | 论文下载 | 访谈 | 游戏
您现在的位置: 考试吧(Exam8.com) > 计算机等级考试 > 名师指导 > 正文

等级考试三级C语言上机注意事项

    计算机三级考试马上就要到了,然而很多朋友对计算机上机考试却仍旧十分茫然,

    参加这次考试的人有很大一部分是上次机试没有通过的朋友,甚至还有一些考了两次机试都没有通过的……

    这其中不乏一些C语言学的很不错的高手,大部分人到现在都不明白为什么自己亲手编的程序却是0分……

    究竟是什么原因呢?不就是那100道题目吗?翻来覆去的看也没有发现自己的程序有什么错误啊,看资料,用模拟盘模拟也是满分啊,可为什么正式考试就是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)%256;
    南开:char *pf; *pf=*pf*11%256;
    表面看来,好象两个都对,
    请你在TC下运行一下下面的代码,看一下结果你就知道了是怎么回事了……:
    main()
    {
    char nk='E',*nkp,wuyou='E';
    int wy;
    nkp=&nk;
    *nkp=*nkp*11%256;
    wy=wuyou*11%256;
    printf("%c %c %c %c\n",nk,*nkp,wuyou,wy);
    printf("%d %d %d %d\n",nk,*nkp,wuyou,wy);
    }
    看到结果了么?是不是很吃惊啊?
    ≈ ≈ E ≈
    -9 -9 69 247
    大家看到了,南开的结果是负数,连原来的变量nk都变成了负数,这显然错了。
    无忧的聪明一点,知道int比char大,定义了个int,对了。
    南开错误原因就是在TC2.0中char型变量只有一个字节,根本容纳不下'E'*11,
    所以产生了溢出,上次考这道题目没过的同学是不是有所启发呢?
    这里给出考试中心命题组的答案:
    void encryptChar(){
    int i,k,ch;
    for(i=0;i<maxline;i++)
    for(k=0;k<strlen(xx[i]);k++){
    ch=xx[i][k];
    ch=(ch*11)%256;
    if(!(ch<=32||ch>=130))xx[i][k]=ch;
    }
    }
    似乎一个例子不能说明什么,那就把上面的数字题目的答案给大家看看:
    考试中心命题组23题答案:
    int i;
    long val;
    float dec;
    for(i=0;i<N;i++){
    val=(long)xx[i];
    aver+=xx[i]-val;
    }
    aver/=(double)N;
    for(i=0;i<N;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的类型一定不要用整形。
    
    第三条:不要使用快捷键!!很多人在使用TC的时候习惯于用F9,CTRL+F9或者其他的热键,
    首先F9只是编译了,并没有运行程序,考试一定要运行一下你的程序才会有输出文件,
    否则一定是0分。
    热键在考试的时候是很危险的,因为UCDOS的热键和TC的冲突,CTRL+F9变成了全角半角转换,
    如果不小心按了,会导致你的程序有中文字符,编译的时候出错,而且很难查找排除错误~!
    所以建议大家在考试的时候使用ALT+红色字母 来调出菜单进行编译调试等步骤,建议步骤为:
    写完代码后用ALT+F,S存盘,然后ALT+C,M编译,然后ALT+R,R运行,这样就万无一失了。
    
    第四条:不要加载任何输入法
    上机考试用的DOS环境内存十分有限,如果你加载了任何一个输入法,都有可能造成编译程序的时候出现out of memory 内存不足的情况,到那时就麻烦了。
    程序只要写的对就可以,不要画蛇添足的加注释,没有人看的~!
    第五条:不要提前交卷!考场一般使用NOVELL网络,有的时候存在网络状况不好而连接失败等问题,
    这时,如果你已经提前交卷的话就不太好了。另外也可以防止别人有意无意的改动你的程序。
    第六条:考试时候的一些技巧。
    1、进入TC以后如果想查看题干要求,不用退出TC,直接用F12就可以显示出来。
    2、用F12显示题目之后可以通过CTRL+BACKSPACE把题目定在屏幕上。
    3、编译运行之后,可以通过type out.dat或edit out.dat或tc out.dat查看输出文件。
    (千万不要改动!不然影响考试结果。如果不小心改动,再重新编译运行一次你的程序就可以了)
    4、如果考试的时候不小心改动了代码的主函数或其他部分,可以进入考生目录下的warn隐藏目录,
    把里边的备份文件复制到考生目录。步骤:
    在考生目录下输入cd warn
    输入copy *.c ..输入cd ..
    就可以了
    5、如果调试的时候不小心死循环了,可以通过CTRL+C或CTRL+BREAK来终止,如果连按多次都没反应,
    不要慌,立即找监考老师说明情况,可以重新启动机器继续答原题,你的程序还在,时间也是继续刚才的。
    所以这也提醒大家,运行程序之前一定要先存盘。

文章搜索
版权声明:如果计算机等级考试网所转载内容不慎侵犯了您的权益,请与我们联系800@exam8.com,我们将会及时处理。如转载本计算机等级考试网内容,请注明出处。