2022年-计算机等级C语言上机考试改错题分类总结 .pdf

上传人:Che****ry 文档编号:27203989 上传时间:2022-07-23 格式:PDF 页数:6 大小:83.32KB
返回 下载 相关 举报
2022年-计算机等级C语言上机考试改错题分类总结 .pdf_第1页
第1页 / 共6页
2022年-计算机等级C语言上机考试改错题分类总结 .pdf_第2页
第2页 / 共6页
点击查看更多>>
资源描述

《2022年-计算机等级C语言上机考试改错题分类总结 .pdf》由会员分享,可在线阅读,更多相关《2022年-计算机等级C语言上机考试改错题分类总结 .pdf(6页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、11189816.doc 第 1 页 共 6 页计算机等级 C语言上机考试改错题分类总结改错题总的出错分为两大类:语法出错和逻辑出错,此类题目是比较简单的题型,因此也是最容易把握的知识点。注意:错误都是出现在/*found*/下面的这一行。只是下面的这一行,其他行都没有错误。不能修改其他行。做题方法:1.首先拿到题目,先将题目详细看看,看清题目对做题时很有帮助的,特别是一些逻辑性较强的题目很有用。有的同学可能会觉得题目太难了不想去读,其实在做改错题目时即便你不会也能把题目做对。2按照以下的步骤解决题目中的错误的内容,对应着修改。修改完之后保存即可。一、语法错误1.关键字出错:在二级 C 语言考

2、试中仅仅考查学生对基本的关键字掌握情况,比如:整型就是int 不是 Int,知识点简单。(1)6 题第二个空: If 应该改为 if; (2)12 题第二个空: If 应该改为 if; (3)23 题第一空: dounle 应该改为 double; (4)35 题第二空: If 应该改为 if; (5)36 题第二空: Double 应该改为 double。(6)2 题第二空: wihle 应该改为 while。2.格式出错:在考试中主要考查学生细心的程度,最喜欢考简单的知识点。(1)少分号: 2 题第一空、 28 题第一空、 29 题第一空、 34 题第二空、 37 题第二空、 48 题第二

3、空。考查的知识点:分号是语句结束的标志。(2)for 语句的格式: for( ; ; )中间用分号隔开不是用逗号隔开。3 题第二空、6 题第一空、14 题第二空都是出现了for 语句格式出错的问题。(3)if 语句的格式: if(表达式 ), if 后面必须加上小括号。 37 题第一空 if 后面必须加上小括号。(4) 命令行格式出错: 17 题第一空中 include 命令少了 #, 正确的形式应该是 #include “stdio.h ” ;(5)常用函数格式:A 22 题第一空中 n=strlenaa应该改为 n=strlen(aa),记住函数名后面一定是花括号,不能是方括名师资料总结

4、- - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 6 页 - - - - - - - - - 11189816.doc 第 2 页 共 6 页号,方括号只有在数组下标中用到。B 49 题第一空 int j,c,float xa=0.0;应该改为 int j,c;float xa=0.0;记住: 要同时定义两种以上不同的数据类型的时候必须在不同类型的数据中间加上分号。C 41 题第二空 scanf(“%d”,aij); 应该改为 scanf(“%d”,&aij) 。考查 scanf输入函数

5、的格式。(6)数组: 所有老师讲到数组时候必须统一将此知识点给学生回顾一遍!A 数组下标引用时候只能用反括号。28 题第二空 t(k)=b(j)应该改为 tk=bj 。B 二维数组中的列下标不能省略。46 题第一空必须将数组列下标补充完整。(7)常用符号出错:A C 语言中大于等于符号是“ =”,但是在考试的时候可能出现将它写为“=”,49 题第二空就是这样的错误。B 当题目中需要比较某个字符是否是大写字母或是小写字母、数字时,必须将“与”、 “或”、“非”记住。判断某个字符是否是大写字母:char ch;if(ch=A& ch=a& ch=0& ch=9)printf( “%c”,ch);

6、判断某个数字是否能同时被5 和 7 整除:int i=35; if(i%5=0&i%7=0)printf(“%d”,i); 判断某个数字是否能被5 或 7 整除:int i=35; if(i%5=0|i%7=0)printf( “%d”,i); 判断某个数字是否是偶数或奇数:int i=35; if(i%2=0) printf(“%d 是一个偶数” ,i); else printf(“%d 是一个奇数” ,i); 二、逻辑错误1. 使用了没有定义过的变量:这种题目可以通过编译查找出出错的地方并改之。(1)0(零)和 o(字母欧)的区别: 19 题第一空、 23 题第二空、 43 题第二空。(2

7、)P(大)和 p(小)的区别: 33 题第一空。(3)普通变量大小写的区别:A 有的变量在定义的时候是小写但是在使用的时候是大写,或是在定义的时候是大写在使用的时候却是小写。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 6 页 - - - - - - - - - 11189816.doc 第 3 页 共 6 页B 大小写没有出错,程序中直接使用了没有定义过的变量,要求学生更加细心的读题目。45 题第二空使用到了i 这个变量,但是我们在定义行中没有找到i 的定义,因此在做

8、题时候要上下结合来分析题目。 22 题第二空 c=aaj中的 c 没有定义过,参看定义的语句不能发现应该是ch=aaj。38 题第一空要求将后面用到的变量s1 定义完整。2.运算符号出错:(1)C 语言中除号是“ / ”不是“”(2)赋值号( =)和等号( = =)混淆 ,记住在if 语句中出现赋值号( =)一般是讲它改为等号(= =)。14 题第一空和 29 题第二空都是这样的错误。3.表达式的取值范围出错:当遇到计算表达式的累加或是累减时,一定用到循环来完成相应的操作。例如:改错题第七题中要求 计 算 t=1-1/2*2-1/3*3- ,.-1/m*m 这 个 表 达 式 , 在 这 个

9、题 目 中 第 一 空 有 这 样 的for 语 句 :for(i=2;im;i+)y-=1/(i*i);从题目中不难发现i 是一个变量,它的取值范围从整数2 开始到 m-1 结束,最终计算的结果为y=1-1/2*2-1/3*3- , .-1/(m-1)*(m-1) 和题目要求的不符,因此将im 改为 i=m。做这样的题目看两点:一看题目中的表达式,二看for 语句中变量的取值范围。31题第二空同样的考点。4.C 语言中的除法运算:这个考点同样考查表达式的相关知识。例如:改错题第七题中要求计算t=1-1/2*2-1/3*3- , .-1/m*m 这个表达式,在这个题目中第一空有这样的for 语

10、句: for(i=2;i)、小于( y) return x; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 6 页 - - - - - - - - - 11189816.doc 第 4 页 共 6 页int a,b,c; else return y; scanf( “%d%d ”,&a,&b); c=fun(a,b); printf( “最大值为: %d”,c); (1) 函数的返回类型: 在上面的例子中 fun 函数的返回值是int,如果将 int 改为 double

11、,很明显是错误的。从两个地方来看,首先return x;中 x 的类型必须和 fun 函数中的返回值相同, x 是整型。其次c=fun(a,b);中 fun 函数将一个返回值赋值给了变量C,说明函数返回的值一定是整型。记住:函数调用、函数的返回值和 ruturn 中数据类型必须一致! 1.1、3.1、16.1、19.2、34.1、36.1、40.1、48.1 都死这样的错误,(注 1.1 表示第一题第一空)。(2) return 后面的表达式及其类型:19.2、30.2、39.2 (3) 函数传递的参数:int fun(int *x,int *y) main() if(*x*y)return

12、*x; int a,b,c; else return *y; scanf(“%d%d ”,&a,&b); c=fun(&a,&b); printf( “最大值为: %d”,c);一定注意:传递的是值还是地址。比较上面两个例子大家很容易区别传递的是值还是地址,第一个例子调用函数的时候传递的是值,因此在 fun 函数的形参中 x 和 y 仅仅是普通的变量, 而第二个例子中调用函数的时候传递的是地址,因此在fun 函数的形参中 x 和 y 就是两个指针变量。 5.1、13.1、17.2、20.1、25.2 依据刚刚讲的方法很快就能找出出错点。(4)指针的使用:int fun(int *x,int *

13、y) if(*x*y)return *x; else return *y; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 6 页 - - - - - - - - - 11189816.doc 第 5 页 共 6 页在此例中 fun 函数的形参是 x 和 y,它们的类型是整型的指针, 那么在 fun 函数的函数体中使用到x 和 y 的值时一定要区分: xy 比较的是 x 和 y 所存变量地址的大小, *x*y 才是比较值的大小。如果存在*x=x+y;的类似情况一定是错误的

14、,必须要将赋值号的左右两边的类型变为一致。5.2、5.3、20.2、24.2、35.1、44.1一定特别注意!7.数组:(1)数组下标的初始值:数组下标从零开始,到长度减一结束。考试技巧:当出错行在定义部分时,先检查该定义语句有没有语法错误,再看定义语句中的变量有没有赋初始值,最后看变量赋的初始值有没有正确。 定义初始值有窍门, 遇到累加时, 用来存放累加和的变量一般赋值为零,遇到求阶乘时,用来存放阶乘值的变量一般赋值为一。8.1 中的变量 k 赋值为 1,但是我们说了数组的下标只能从0 开始,因此将 1 改为 0 就行了。(2)普通变量的初始值: 依照上面的技巧,我们同样可以将它延伸到普通变

15、量中。41.1 中需要将变量的值进行初始化,题目中有这样的要求:“输出主对角线元素之和”,既然这样我们很肯定初始值应该为零,接着我们看看是给哪个变量赋值?看printf(“sum=%d”,sum);输出的是 sum 的值,说明 sum 就是我们要补充在横线上的变量。10.1 也可以用同样的方法来分析。(3)数组和字符串长度减一: 当使用数组中的元素时, 最大值只能到数组长度减一。 字符串以 0作为字符串的结束标志,因此取值最大也只能到字符串长度减一。25.2 中输出 printf(“%d”,aai);分析程序知道i 在此时就是数组的长度,我们要输出数组中的元素,最大就只能到aai-1 ,因此改

16、为printf(“%d”,aai-1);就行了。 4.1 和 38.2 中考查的是字符串长度减一的问题。(4)数组下标往后走: 当题目要求将一个数组中的元素直接赋值或是以某种方式复制到另一个数组中时,接受数据的数组中的下标要自增。9.1 中 sj=si; 将 si中的值复制给 sj,联系上下函数段发现 i 是一个变量被 for 语句控制,从 0 开始直到遇到 0结束。 i 一直在加但是 j 没有变化 ,因此改为sj+=si; 即可。类似的题目有: 25.2、26.2、32.1、50.2。8特例:部分题目的解答很特殊,需要根据上下文中的内容来解答题目;例如10.1,在此题目中,定义了变量 t=0

17、;根据下面程序中的循环, s=0.0,首先加的是变量 t 的值,即 s 的值是从 0.0 开始的, s 得到的值是:s=0.0+0.0+1.0/3+ ,观察表达式的值, 这个少加了第一项 1.0 的值,所以变量 t 的初值不能是 0.0,只能是 1.0,或者是 1;21.2 中的这个题目中,表达式的值是从2/1+3/2+5/3, 即表达式的规律是从第一项开始,以后的每一项的分子是前一项的分子和分母的和,分母为前一项的分子。所以该题目的第二个空中的内容应该是: c=a;a+=b;b+=c;这一条语句中 a 代表的变量的分子, b 代表的是变量的分母, 执行第一个表达式的值,名师资料总结 - -

18、-精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 6 页 - - - - - - - - - 11189816.doc 第 6 页 共 6 页把 a 的值赋值给变量c,第二个表达式是把分子和分母的和相加复制给变量a,第三个表达式是把原来a 的值和变量 b 的值相加之后得到的值赋值给变量b,则变量 b 得到的值也为分子分母的和,不满足题意,而分母应该为原来分子的值。第三表达式的值应该改为:b=c ;类似的题目有: 33.2、40.2、43.1、47.1、50.19.素数 11.1 、29 掌握求素

19、数的格式:判断一个数是否是素数的方法很多,的是只用掌握一种即可,首先掌握判断一个素数的方法;素数的定义: 1、是自然数 2、只能被 1 和本身整除, 2 到本身减一之间的数不能整除该数。判断 m 是否为素数的格式:for(i=2;im;i+) if(m%i=0) break; if(m=i) 表明 m 是素数;素数只能被 1 和 m,那么用 2 到 m-1 之间的数除 m,如果有一个数能整除m,说明 m 不是一个素数,就不用再判断后面的数值了,用一条break 语句提前结束函数;如果一直都不能整除,则说明m 是一个素数。 那么用循环语句表示2 到 m-1 之间的数的语句为: for(i=2;inext ;第二个空改为: p=p-next;.2、不带头结点的链表带头结点的链表的第一个空的改为:p=h; 第二个空改为: p=p-next;.名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 6 页 - - - - - - - - -

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

当前位置:首页 > 教育专区 > 高考资料

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁