计算机等级考试上机.ppt

上传人:s****8 文档编号:67211428 上传时间:2022-12-24 格式:PPT 页数:32 大小:162.50KB
返回 下载 相关 举报
计算机等级考试上机.ppt_第1页
第1页 / 共32页
计算机等级考试上机.ppt_第2页
第2页 / 共32页
点击查看更多>>
资源描述

《计算机等级考试上机.ppt》由会员分享,可在线阅读,更多相关《计算机等级考试上机.ppt(32页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、计算机等级考试上机指导上机考试评分原理分析上机考试评分原理分析上机考试是由计算机对考生的答题结果进行判断的,上机考试是由计算机对考生的答题结果进行判断的,而不是人为阅卷,即计算机评分而不是人为阅卷,即计算机评分!等级考试的上机考试是分批进行的,在相邻两批考等级考试的上机考试是分批进行的,在相邻两批考次之间,由监考人员做该批考次结束前的次之间,由监考人员做该批考次结束前的“收分收分”工作工作(实际上是由计算机完成的实际上是由计算机完成的)。也就是说,当你考完机试。也就是说,当你考完机试后,你的上机成绩就已经出来了,只是我们不知道结果后,你的上机成绩就已经出来了,只是我们不知道结果罢了。当然,监考

2、人员也不知道,因为最后分数是加密罢了。当然,监考人员也不知道,因为最后分数是加密的的!评分程序在评改你的上机成绩,先从对应的考生文评分程序在评改你的上机成绩,先从对应的考生文件夹中读取考生的答题文件,再对这些文件按照评分程件夹中读取考生的答题文件,再对这些文件按照评分程序进行对比,然后给出相应的分数,最后,系统自动将序进行对比,然后给出相应的分数,最后,系统自动将你的考生文件中的所有文件全部删除你的考生文件中的所有文件全部删除!上机考试评分原理分析上机考试评分原理分析对于题空题和改错题,评分程序先是读取考生文件夹下的对于题空题和改错题,评分程序先是读取考生文件夹下的BLAN.C和和MODI.C

3、文件,再找到其中需要填空和改错的代码所在文件,再找到其中需要填空和改错的代码所在的行数,最后与评分程序中的提供的数据进行对比。的行数,最后与评分程序中的提供的数据进行对比。需要提醒考需要提醒考生注意的是,填空题和改错题的要求中明确声明:不得删减或增生注意的是,填空题和改错题的要求中明确声明:不得删减或增加程序行,就是这个道理加程序行,就是这个道理;对于编程题,评分程序先是读取考生文件夹下的扩展名为对于编程题,评分程序先是读取考生文件夹下的扩展名为.DAT的文件,再其中的数据与评分程序中的提供的数据进行对比,的文件,再其中的数据与评分程序中的提供的数据进行对比,因此,考生在编程后,一定要运行程序

4、,以生成扩展名为因此,考生在编程后,一定要运行程序,以生成扩展名为.DAT的的输出文件输出文件!上机考试评分原理分析上机考试评分原理分析评分程序是按照最终生成的文件给分的评分程序是按照最终生成的文件给分的!由上述结论可以推出由上述结论可以推出如下事实:如下事实:1.只要考生能生成最终答案文件,均可得分只要考生能生成最终答案文件,均可得分!2.很多最终答案文件只有少数若干行数据,分数由正确答案很多最终答案文件只有少数若干行数据,分数由正确答案的行数决定的行数决定!例如,真考题库中有这样一道题,要求用迭代方法计例如,真考题库中有这样一道题,要求用迭代方法计算算cos(x)-x=0的一个近似根,其答

5、案是的一个近似根,其答案是0.739085,最终要求生成,最终要求生成的文件的文件OUT.DAT中只有一行数据。有这个文件,并且该文件只有中只有一行数据。有这个文件,并且该文件只有一行数据一行数据0.739085的话,就可以得到的话,就可以得到100分分!无所谓你是否编写了无所谓你是否编写了程序程序!当然,有多行答案的文件的格式是由程序中的输出部分决定当然,有多行答案的文件的格式是由程序中的输出部分决定的的(而这个部分是不允许考生修改的而这个部分是不允许考生修改的!),考生必须能够看懂输出程,考生必须能够看懂输出程序段的输出格式,否则会适得其反序段的输出格式,否则会适得其反!上机考试两点重要注

6、意事项上机考试两点重要注意事项注意事项注意事项1:大家做上机的填空、改错、编程题的时候请务必做到两件事情:大家做上机的填空、改错、编程题的时候请务必做到两件事情:一是编译运行确认无误一是编译运行确认无误!二是切记一定要保存二是切记一定要保存!特别提醒:特别提醒:a、如果没有保存,无论是填空、改错还是编程题你都不能得、如果没有保存,无论是填空、改错还是编程题你都不能得分,相当于没有做。分,相当于没有做。b、如果编程题没有运行即使保存了都有可能不得分,所以、如果编程题没有运行即使保存了都有可能不得分,所以“编译并运行编译并运行”和和“保存保存”两件事情请大家都务必办到。两件事情请大家都务必办到。c

7、、万一有些同学不能完整的做完某一个题目无论是填空、改、万一有些同学不能完整的做完某一个题目无论是填空、改错还是编程,也就是说你根本无法运行这个程序,也请你把你会做错还是编程,也就是说你根本无法运行这个程序,也请你把你会做的那部分填上去并保存,或许运气好会有步骤分,就当的那部分填上去并保存,或许运气好会有步骤分,就当“死马当活死马当活马医马医”嘛,因为上机考试的评分是以机器评分为主、人工评分为辅嘛,因为上机考试的评分是以机器评分为主、人工评分为辅结合进行的结合进行的)上机考试两点重要注意事项上机考试两点重要注意事项注意事项注意事项2:很多同学在做完了前一题很多同学在做完了前一题(例如填空例如填空

8、BLANK1.C或改或改错错MODI1.C等等)没有关闭工作区就直接打开下面的题目做没有关闭工作区就直接打开下面的题目做(即使你点击即使你点击blank1.c文件右上角的叉叉关闭了这个文件文件右上角的叉叉关闭了这个文件也不行,必须关闭整个工作区也不行,必须关闭整个工作区),这样你运行的时候永远,这样你运行的时候永远不会正确,所以大家做完了前一题后务必关闭工作区再不会正确,所以大家做完了前一题后务必关闭工作区再做下一题做下一题(操作步骤为:打开主菜单:文件操作步骤为:打开主菜单:文件-关闭工作区,关闭工作区,很简单的很简单的),当然,如果你万一不会关闭工作区,干脆做,当然,如果你万一不会关闭工作

9、区,干脆做完一题就把整个完一题就把整个VC6.0关闭,然后重新启动关闭,然后重新启动VC6.0再打开再打开下一题做也行的。下一题做也行的。1、填空题请补充函数fun(),该函数的功能是:把从主函数中输入的字符串str2接在字符串str1的后面。例如:str1=“How do”,str2=“you do?”,结果输出:How do you do?注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。试题程序:#include#include#define N 40void fun(char*str1,char*str2)int

10、 i=0;char*p1=str1;char*p2=str2;while(【1】)i+;for(;【2】;i+)*(p1+i)=【3】;*(p1+i)=0;main()char str1N,str2N;clrscr();printf(*Input the string str1&str2*n);printf(nstr1:);gets(str1);printf(nstr2:);gets(str2);printf(*The string str1&str2*n);puts(str1);puts(str2);fun(str1,str2);printf(*The new string*n);puts(

11、str1);答案及评析答案及评析:【1】*(p1+i)【2】*p2 【3】*p2+【解析】填空1:变量i用来记录字符串str1的长度,当指针指到字符串str1结束标志符0时,while循环结束,变量i停止累加。填空2:指针p2指向字符串str2,通过for循环将字符串str2接在str1后面,循环结束的条件是指针p2所指的字符是字符串结束标志符0。填空3:指针p2最初指向字符串str2的首字符,通过自加1,使指针p2依次向后移动,指向str2的各个字符,实现将字符串str2接在str1后面的功能。请补充函数fun(),该函数的功能是求一维数组xN的平均值,并对所得结果进行四舍五入(保留两位小数

12、)。例如:当x10=15.6,19.9,16.7,15.2,18.3,12.1,15.5,11.0,10.0,16.0,结果为:avg=15.030000。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。试题程序:#include#includedouble fun(double x10)int i;long t;double avg=0.0;double sum=0.0;for(i=0;i10;i+)【1】;avg=sum/10;avg=【2】;t=【3】;avg=(double)t/100;return avg;m

13、ain()double avg,x10=15.6,19.9,16.7,15.2,18.3,12.1,15.5,11.0,10.0,16.0;int i;clrscr();printf(nThe original data is:n);for(i=0;i10;i+)printf(%6.1f,xi);printf(nn);avg=fun(x);printf(average=%fnn,avg);答案及评析答案及评析:【1】sum+=xi 【2】avg*1000 【3】(avg+5)/10【解析】填空1:通过for循环求出10个数的累加和,存于变量sum中。填空2:为了实现四舍五入保留两位小数的功能,

14、应将平均值先扩大1000倍。填空3:将平均值加上5,再除以10,实现四舍五入的功能。请补充函数fun(),该函数的功能是:从a到z统计一个字符串中所有字母字符各自出现的次数,结果保存在数组alf中。注意:不区分大小写,不能使用字符串库函数。例如,输入:“A=abc+5*c”,结果为:a=2,b=1,c=2。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。试题程序:#include “stdio.h”#include “#define N 100void fun(char*tt,int alf)int i;char*p=

15、tt;for(i=0;i=A&*p=a&*p=z)alf*p-a+;【3】;main()char strN;char a=a;int alf26,k;clrscr();printf(nPlease enter a char string:);scanf(%s,str);printf(n*The original string*n);puts(str);fun(str,alf);printf(n*The number of letter*n);for(k=0;k26;k+)if(k%5=0)printf(n);printf(%c=%d,a+k,alfk);printf(n);答案及评析答案及评析

16、:【1】alfi=0 【2】*p+=32 【3】p+【解析】填空1:数组alf26用来存放字母字符出现的次数,在使用之前需要清零。填空2:题目要求不区分大小写,所以可以先将所有的大写字母都转换为对应的小写字母,然后一并记录出现的次数。将大写字母转换为对应的小写字母,只需将ASCII码加上32就可以了。填空3:指针p指向字符串tt,通过p自加1来移动指针,访问字符串中的所有字符。请补充函数fun(),该函数的功能是:分类统计一个字符串中元音字母和其他字符的个数(不区分大小写)。例如,输入aeiouAOUpqrt,结果为A:2 E:1 I:1 O:2 U:2 other:4。注意:部分源程序给出如

17、下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。试题程序:#include#include#define N 100void fun(char*str,int bb)char*p=str;int i=0;for(i=0;i6;i+)【1】;while(*p)switch(*p)case A:case a:bb0+;break;case E:case e:bb1+;break;case I:case i:bb2+;break;case O:case o:bb3+;break;case U:case u:bb4+;break;default

18、:【2】;【3】main()char strN,ss6=AEIOU;int i;int bb6;clrscr();printf(Input a string:n);gets(str);printf(the string is:n);puts(str);fun(str,bb);for(i=0;i=A)&(tti=A)&(tti=a)&(tti=z)【解析】错误1:函数的返回值是字符串的首地址,是指针类型,所以在函数名前要加*号。错误2:题目要求将小写字母改为大写字母,所以if语句的判断条件是小写字母。下列给定程序中,函数fun()的功能是:先从键盘上输入一个3行3列的矩阵的各个元素的值,然后输出

19、主对角线元素之积。请改正函数fun()中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include int fun()int a33,mul;int i,j;mul=1;for(i=0;i3;i+)/*found*/for(i=0;j3;j+)scanf(%d,&aij);for(i=0;i3;i+)/*found*/mul=mul*aij;printf(Mul=%dn,mul);main()fun();答案及评析答案及评析:(1)错误:for(i=0;j3;j+)正确:for(j=0;j0)/*found*/s=s%100;*t

20、=s%10*s1+*t;s1=s1*10;main()long s,t;clrscr();printf(nPlease enter s:);scanf(%ld,&s);fun(s,&t);printf(The result is:%ldn,t);答案及评析答案及评析:(1)错误:int fun(long s,long*t)正确:void fun(long s,long*t)(2)错误:s=s%100;正确:s=s/100;【解析】错误1:函数由指针来完成参数的传递,所以没有返回值,应定义函数的类型为void。错误2:此处要注意特殊运算符号%-取余和/-整除的区别。将一个数整除100则可得到由其

21、百位数以上的数组成的新数字,将一个数整除100取余则可得到由十位数和个位数组成的新数。下列给定的程序中,函数fun()的功能是:计算并输出k以内最大的6个能被7或11整除的自然数之和。K的值由主函数传入,若k的值为500,则函数的值为2925。请改正程序中的错误,使它能得到正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include#include int fun(int k)int m=0,mc=0,j;/*found*/while(k=2)&(mc=2)&(mc=2)&(mc6)(2)错误:if(k%7=0)|(k%11=0)正确:if(k%7=0

22、)|(k%11=0)(3)错误:m=k;正确:m=m+k;【解析】错误1:C语言规定while语句后的表达式两侧必须要有圆括号。错误2:if语句的判断条件应用关系运算符,而不是赋值运算符。错误3:根据题意,将满足条件的数求累加和。3.编程题编程题请编写函数fun(),该函数的功能是:移动一维数组中的内容,若数组中有n个整数,要求把下标从p到n-1(pn-1)的数组元素平移到数组的前面。例如,一维数组中的原始内容为1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,p的值为6。移动后,一维数组中的内容应为7,8,9,10,10,11,12,13,14,15,1,2,3,4,5

23、,6。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#include#define N 80void fun(int*w,int p,int n)main()int aN=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15;int i,p,n=15;printf(The original data:n);for(i=0;iN;I+)printf(%3d,ai);printf(nnEnter p:);scanf(%d,&p);fun(a,p,n);printf(nThe data after m

24、oving:n);for(i=0;iN;I+)printf(%3d,ai);printf(nn);答案及评析答案及评析:void fun(int*w,int p,int n)int i,j,t;for(i=p;i=0;j-)/*实现循环右移*/wj+1=wj;w0=t;【解析】本题采用循环右移的算法。和我们在前面分析的稍有不同的是,一个是整型数组,一个是字符型数组。学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun(),它的功能是:把分数最低的学生数据放在h所指的数组中。注意:分数低的学生可能不只一个,函数返回分数最低学生的人数。注意:部分源程序给出如下

25、。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#include#define N 16typedef struct char num10;int s;STREC;int fun(STREC*a,STREC*b)main()STREC sN=GA005,82,GA003,75,GA002,85,GA004,78,GA001,95,GA007,62,GA008,60,GA006,85,GA015,83,GA013,94,GA012,78,GA014,97,GA011,60,GA017,65,GA018,60,GA016,74;STREC h

26、N;int i,n;FILE*out;n=fun(s,h);printf(The%d lowest score:n,n);for(i=0;i n;i+)printf(%s%4dn,hi.num,hi.s);/*输出最低分学生的学号和成绩*/printf(n);out=fopen(out19.dat,w);fprintf(out,%dn,n);for(i=0;in;i+)fprintf(out,%4dn,hi.s);fclose(out);答案及评析答案及评析:int fun(STREC*a,STREC*b)int i,j=0,min=a0.s;for(i=0;iai.s)min=ai.s;/*

27、找出最小值*/for(i=0;iN;I+)if(min=ai.s)bj+=ai;/*找出成绩与min相等的学生的记录,存入结构体b中*/return j;/*返回最低成绩的学生人数*/【解析】该程序使用循环嵌套,第1个for语句的作用是找出最小值。第2个循环的作用是找出与min相等的成绩,也即最低成绩的学生记录,并存入b中。请编写一个函数fun(),它的功能是:求出一个4M整型二维数组中最小元素的值,并将此值返回调用函数。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#define M 4#include fun

28、(int aM)main()int arr4M=11,3,9,35,42,-4,24,32,6,48,-32,7,23,34,12,-7;printf(min=%dn,fun(arr);答案及评析答案及评析:fun(int aM)int i,j,min=a00;for(i=0;i4;i+)for(j=0;jaij)min=aij;/*求出二维数组的最小值*/return min;【解析】此类求最大值或最小值的C语言问题,我们可以采用逐个比较的方式。要求数组中的所有元素走动一遍,并从中找出最大、最小值,要注意一开始应使min存放数组中的第一个元素的值。可按逐行查找也可按逐列查找的方式,本题采用的

29、是逐行查找的方式。即行下标在外层循环,列下标在内层循环,因为在循环的嵌套中越在内层循环,循环变化就越快。请编写一个函数fun(),它的功能是:将ss所指字符串中所有下标为偶数位置的字母转换为小写(若该位置上不是字母,则不转换)。例如,若输入ABC4efG,则应输出aBc4efg。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#include#include#includevoid fun(char*ss)main()char tt81;clrscr();printf(nPlease enter an string within 80 characters:n);gets(tt);printf(nnAfter changing,the stringn%s,tt);fun(tt);printf(nbecomesn%sn,tt);答案及评析:void fun(char*ss)int i;for(i=0;ssi!=0;i+)/*将ss所指字符串中所有下标为偶数位置的字母转换为小写*/if(i%2=0&ssi=A&ssi=Z)ssi=ssi+32;【解析】从C语言的学习中我们知道,只要将小写字母减去32则转成大写字母,将大写字母加上32则转成小写字母。该程序是用if语句实现该功能转化的。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 生活常识

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com