




已阅读5页,还剩14页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
计算机等级考试二级C上机考试专题机试部分:机试就要亲自编程,考核阅读程序、编写程序的实践能力。题型分为:程序填空30分、程序改错30分、编写程序40分,3大题共100分。主要是熟悉C程序设计的方法和步骤、掌握C语言语法规则,掌握程序设计的控制结构及其流程的执行走向,掌握数组、指针、函数、字符串、文件等相关内容,实现程序实践。主要涉及的章节主要是函数、数组、文件、循环、字符串、指针、选择等。考查内容主要包括:A. 数据统计与检索,包括:累加、连乘、最大值、最小值、平均值等;B. 数组元素和字符串的使用;C. 数值计算包括矩阵计算、矩阵转置;D. 字符处理,包括英文字母大小写转换和字符个数统计等。一、上机改错题的特点和注意事项1上机改错的试题中通常包含两个(或三个)错误需要修改。 2试题中用*found*/来提示在下一行(或下面第二行)有错。 3错误的性质基本分语法错和逻辑错两种,也有些试题要求把语句添加在下划线处。 4特别要注意的是:只能在出错的行上进行修改,不要改动程序行的顺序,更不要自己另编程序。二、上机改错测试时,建议按以下步骤进行1首先仔细审题,了解试题的要求,看清楚试题给出的输入和输出例示,以便检验改错后程序运行的结果是否正确。 2当在V C+6.0环境下调出源程序后,审视/*found*/所在函数,根据题义理解程序所采用的基本算法,做到心里有数。 3先按CTRL+F7对测试程序进行检查是否有语法错误。当编译提示有语法错时,可参考编译提示来查找并改正错误。 4当不再出现语法错时,使用CTRL+F5执行, 按照试题的示例给出的数据进行试算,若试算的结果与给出的输出结果相同时,该题就做对了;若试算的结果与给出的输出结果不同,就应进一步检查程序中的逻辑错误。 5当程序存在逻辑错误时,首先应当理解题意、读懂程序的算法,必要时可按步检查数据的流程,以便确定错误所在。例如,题目要求数据按由小到大排序,而结果数据是按由大到小进行了排序,问题可能出现在条件判断上。又如,输出的字符串比预期的短,就有可能字符串的结束标志放错了位置。再如做循环的时候 数组上限下限错误了 ,基数是从0开始 而不是1开始的。修改程序中的逻辑错时,要求考生认真读懂程序代码。 6修改完成,得到正确结果后,一定不要忘记把修改后的程序存盘。三、上机编程题的特点和说明在二级C程序设计上机考试中,要求完成一个独立的函数的编程。目前教育部考试中心已出版了上机考试习题集,这些有助于学习编程,但应当在学习过程中理解基本的算法,通过实际上机操作积累经验,才能掌握基本的编程能力。 四、进行编程测试时,建议按以下步骤进行1首先仔细审题,了解试题的要求,记下试题给出的输入和输出例示,以便检验在完成指定的函数后程序运行的结果是否正确。 2当在V C+6.0环境下调出源程序后,应对照函数首部的形参,审视主函数中调用函数时的实参内容,以便明确在函数中需要处理的数据对象。 3理解试题的要求,审视主函数中调用函数的方式,若在表达式中调用函数(如把函数值赋给某个对象),则要求有函数值返回,需注意函数的类型,并在函数中用return语句返回函数值;若主函数中仅用语句形式调用函数,则需要通过形参间接地返回所得结果。 4选择适当的算法进行编程,输入程序语句。不要忘记及时存盘! 5编译程序,直到没有语法错误。 6调试程序,利用试题中给出的例示数据进行输入(若要求输入的话),运行程序,用例示的输出数据检验输出结果,直到结果相同。以下是一些C编程时常犯的错误,特别写给各位同学以供参考。 1.书写标识符时,忽略了大小写字母的区别。 main() int a=5; printf(%d,A); 编译程序把a和A认为是两个不同的变量名,而显示出错信息。C认为大写字母和小写字母是两个不同的字符。习惯上,符号常量名用大写,变量名用小写表示,以增加可读性。 2.忽略了变量的类型,进行了不合法的运算。 main() float a,b; printf(%d,a%b); %是求余运算,得到a/b的整余数。整型变量a和b可以进行求余运算,而实型变量则不允许进行“求余”运算。 3.将字符常量与字符串常量混淆。 char c; c=a; 在这里就混淆了字符常量与字符串常量,字符常量是由一对单引号括起来的单个字符,字符串常量是一对双引号括起来的字符序列。C规定以“”作字符串结束标志,它是由系统自动加上的,所以字符串“a”实际上包含两个字符:a和,而把它赋给一个字符变量是不行的。 4.忽略了“=”与“=”的区别。 在许多高级语言中,用“=”符号作为关系运算符“等于”。如在BASIC程序中可以写 if (a=3) then 但C语言中,“=”是赋值运算符,“=”是关系运算符。如: if (a=3) a=b; 前者是进行比较,a是否和3相等,后者表示如果a和3相等,把b值赋给a。由于习惯问题,初学者往往会犯这样的错误。 5.忘记加分号。 分号是C语句中不可缺少的一部分,语句末尾必须有分号。 a=1 b=2 编译时,编译程序在“a=1”后面没发现分号,就把下一行“b=2”也作为上一行语句的一部分,这就会出现语法错误。改错时,有时在被指出有错的一行中未发现错误,就需要看一下上一行是否漏掉了分号。 z=x+y; t=z/100; printf(%f,t); 对于复合语句来说,最后一个语句中最后的分号不能忽略不写。6.多加分号。 对于一个复合语句,如: z=x+y; t=z/100; printf(%f,t); ; 复合语句的花括号后不应再加分号,否则将会画蛇添足。 又如: if (a%3=0); I+; 本是如果3整除a,则I加1。但由于if (a%3=0)后多加了分号,则if语句到此结束,程序将执行I+语句,不论3是否整除a,I都将自动加1。 再如: for (I=0;I5;I+); scanf(%d,&x); printf(%d,x); 本意是先后输入5个数,每输入一个数后再将它输出。由于for()后多加了一个分号,使循环体变为空语句,此时只能输入一个数并输出它。 7.输入变量时忘记加地址运算符“&”。 int a,b; scanf(%d%d,a,b); 这是不合法的。Scanf函数的作用是:按照a、b在内存的地址将a、b的值存进去。“&a”指a在内存中的地址。 8.输入数据的方式与要求不符。 scanf(%d%d,&a,&b); 输入时,不能用逗号作两个数据间的分隔符,如下面输入不合法: 3,4 输入数据时,在两个数据之间以一个或多个空格间隔,也可用回车键,跳格键tab。 scanf(%d,%d,&a,&b); C规定:如果在“格式控制”字符串中除了格式说明以外还有其它字符,则在输入数据时应输入与这些字符相同的字符。下面输入是合法的: 3,4 此时不用逗号而用空格或其它字符是不对的。 3 4 3:4 又如: scanf(a=%d,b=%d,&a,&b); 输入应如以下形式: a=3,b=4 9.输入字符的格式与要求不一致。 在用“%c”格式输入字符时,“空格字符”和“转义字符”都作为有效字符输入。 scanf(%c%c%c,&c1,&c2,&c3); 如输入a b c 字符“a”送给c1,字符“ ”送给c2,字符“b”送给c3,因为%c只要求读入一个字符,后面不需要用空格作为两个字符的间隔。 10.输入输出的数据类型与所用格式说明符不一致。 例如,a已定义为整型,b定义为实型 a=3;b=4.5; printf(%f%dn,a,b); 编译时不给出出错信息,但运行结果将与原意不符。这种错误尤其需要注意。 11.输入数据时,企图规定精度。 scanf(%7.2f,&a); 这样做是不合法的,输入数据时不能规定精度。 12.switch语句中漏写break语句。 例如:根据考试成绩的等级打印出百分制数段。 switch(grade) case A:printf(85100n); case B:printf(7084n); case C:printf(6069n); case D:printf(60n); default:printf(errorn); 由于漏写了break语句,case只起标号的作用,而不起判断作用。因此,当grade值为A时,printf函数在执行完第一个语句后接着执行第二、三、四、五个printf函数语句。正确写法应在每个分支后再加上“break;”。例如 case A:printf(85100n);break; 13.在定义数组时,将定义的“元素个数”误认为是可使的最大下标值。 main() static int a10=1,2,3,4,5,6,7,8,9,10; printf(%d,a10); C语言规定:定义时用a10,表示a数组有10个元素。其下标值由0开始,所以数组元素a10是不存在的。 14.在不应加地址运算符&的位置加了地址运算符。 scanf(%s,&str); C语言编译系统对数组名的处理是:数组名代表该数组的起始地址,且scanf函数中的输入项是字符数组名,不必要再加地址符&。应改为: scanf(%s,str);一、填空题:1. 给定程序通过定义并赋初值的方式,利用结构体变量存储了一名学生的学号、姓名和3门课的成绩。函数fun的功能是将该学生的各科成绩都乘以一个系数a。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构! #include typedefstruct intnum; charname9; floatscore3; STU; voidshow(STUtt) inti; printf(%d%s:,tt.num,); for(i=0;i3;i+) printf(%5.1f,tt.scorei); printf(n); /*found*/ voidmodify(_1_*ss,floata) inti; for(i=0;i_2_*=a; main() STUstd=1,Zhanghua,76.5,78.0,82.0; floata; printf(nTheoriginalnumberandnameandscores:n); show(std); printf(nInputanumber:);scanf(%f,&a); /*found*/ modify(_3_,a); printf(nAresultofmodifying:n); show(std); 参考答案:(1)STU(2)scorei(3)&std 2. 给定程序中,函数fun的功能是将形参给定的字符串、整数、浮点数写到文本文件中,再用字符方式从此文本文件中逐个读入并显示在终端屏幕上。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确嶄绸果。 注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构! #include voidfun(char*s,inta,doublef) /*found*/ _1_fp; charch; fp=fopen(file1.txt,w); fprintf(fp,%s%d%fn,s,a,f); fclose(fp); fp=fopen(file1.txt,r); printf(nTheresult:nn); ch=fgetc(fp); /*found*/ while(!feof(_2_) /*found*/ putchar(_3_);ch=fgetc(fp); putchar(n); fclose(fp); main() chara10=Hello!;intb=12345; doublec=98.76; fun(a,b,c); 参考答案:(1)FILE *(2)fp(3)ch 3. 给定程序中,函数fun的功能是:将s所指字符串中的所有数字字符移到所有非数字字符之后,并保持数字字符串和非数字字符串原有的先后次序。例如,形参s所指的字符串为:def35adh3kjsdf7。执行结果为:defadhkjsdf3537。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构! #include voidfun(char*s) inti,j=0,k=0;chart180,t280; for(i=0;si!=0;i+) if(si=0&si=9) /*found*/ t2j=si;_1_; elset1k+=si; t2j=0;t1k=0; /*found*/ for(i=0;ik; i+)_2_; /*found*/ for(i=0;i_3_;i+)sk+i=t2i; main() chars80=def35adh3kjsdf7; printf(nTheoriginalstringis:%sn,s); fun(s); printf(nTheresultis:%sn,s); 参考答案:(1)j+(2)si=t1i(3)j 4、给定程序中,函数fun的功能是:有NN矩阵,以主对角线为对称线,对称元素相加并将结果存放在左下三角元素中,右上三角元素置为0。例如,若N=3,有下列矩阵: 123 456 789计算结果为 100 650 10149 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构! #include #defineN4 /*found*/ voidfun(int(*t)_1_) inti,j; for(i=1;iN; i+) for(j=0;jI; j+) /*found*/ _2_=tij+tji; /*found*/ _3_=0; main() inttN=21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10,i,j; printf(nTheoriginalarray:n); for(i=0;iN; i+) for(j=0;jN;j+) printf(%d,tij); printf(n); fun(t); printf(nTheresultis:n); for(i=0;iN; i+) for(j=0;jN;j+) printf(%d,tij); printf(n); 参考答案:(1)N(2)tij(3)tji 二、程序改错题1、给定程序MODI1.C中函数 fun 的功能是: 将十进制正整数m转换成k(2k9)进制数, 并按高位到低位顺序输出。 例如,若输入8和2,则应输出1000(即十进制数8转换成二进制表示是1000)。 请改正 fun 函数中的错误,使它能得出正确的结果。 注意:不要改动 main 函数。不得增行或删行,也不得更改程序的结构! #include #include void fun( int m, int k ) int aa20, i; for( i = 0; m; i+ ) /*found*/ aai = m/k; m /= k; for( ; i; i- ) /*found*/ printf( %d, aa i ); main() int b, n; printf( nPlease enter a number and a base:n ); scanf( %d %d, &n, &b ); fun( n, b ); printf(n); 答案:(1)aai=m%k;(2)printf(%d,aai-1); 2、给定程序MODI1.C中函数 fun 的功能是:用冒泡法对6个字符串按由小到大的顺序进行排序。 请改正程序中的错误,使它能得出正确的结果。 注意: 不要改动 main 函数,不得增行或删行,也不得更改程序的结构! #include #include #define MAXLINE 20 fun ( char *pstr6) int i, j ; char *p ; for (i = 0 ; i 5 ; i+ ) /*found*/ for (j = i + 1, j 0) p = *(pstr + i) ; /*found*/ *(pstr + i) = pstr + j ; *(pstr + j) = p ; main( ) int i ; char *pstr6, str6MAXLINE ; for(i = 0; i 6 ; i+) pstri = stri ; printf( nEnter 6 string(1 string at each line): n ) ; for(i = 0 ; i 6 ; i+) scanf(%s, pstri) ; fun(pstr) ; printf(The strings after sorting:n) ; for(i = 0 ; i 6 ; i+) printf(%sn, pstri) ; 答案:(1)for(j=i+1;j=0 & si=48 & *s=57) count+; s+; return count; 2、编写一个函数,从num个字符串中找出最长的一个字符串,并通过形参指针max传回该串地址。(注意: 主函数中用*作为结束输入的标志,函数fun中给出的语句仅供参考。) 注意:部分源程序在文件PROG1.C中。 请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include #include void fun(char(*a)81,int num,char *max) /* 以下代码仅供参考 */ int i,k=0,len, maxlen; /* k为a数组中最长串所在元素的下标,初始为0,maxlen为其串长 */ maxlen=strlen(ak); for(i=1;ik
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中职英语教师个人总结
- 2024年全国税务师职业资格考试(税法二)经典试题及答案
- 2025年工业互联网平台IPv6技术升级下的工业互联网平台生态合作伙伴关系构建研究
- 第五课 报警器说课稿-2025-2026学年小学劳动粤教版劳动技术六年级上册-粤教版(劳动技术)
- 2024-2025学年高中数学 第二章 函数 4 函数的奇偶性与简单的幂函数 2.4.2 简单幂函数的图象和性质说课稿 北师大版必修第一册
- 2023-2024学年心理健康三年级下册16《悦纳我的新老师》教学设计+教学设计教科版
- 2025年互联网金融服务平台与监管政策的协同发展报告
- 2025年主题公园沉浸式体验项目开发中的互动技术与体验优化报告
- 高一生物人教版必修1公开课 第三章第1节 细胞膜-系统的边界教学设计、导学案及教后反思
- 第十单元课题1常见的酸和碱说课稿-2025-2026学年九年级化学人教版下册
- (2025年标准)动火安全协议书
- 2026届广州市高三年级阶段训练(8月市调研摸底) 数学试卷(含答案解析)
- 动物防疫检疫试题(附答案)
- 沙石码头经营方案(3篇)
- 2025年粉笔辅警考试题库
- 2025个人房屋租赁合同范本下载
- 水声传感器技术研究与应用
- 能源环保管理办法
- 锂电行业仓储管理办法
- caac理论考试题库及答案
- 《校园安全指导》职业院校安全教育全套教学课件
评论
0/150
提交评论