二级C语言上机改错题技巧总结

上传人:飞*** 文档编号:30645054 上传时间:2018-01-31 格式:DOC 页数:8 大小:99.50KB
返回 下载 相关 举报
二级C语言上机改错题技巧总结_第1页
第1页 / 共8页
二级C语言上机改错题技巧总结_第2页
第2页 / 共8页
二级C语言上机改错题技巧总结_第3页
第3页 / 共8页
二级C语言上机改错题技巧总结_第4页
第4页 / 共8页
二级C语言上机改错题技巧总结_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《二级C语言上机改错题技巧总结》由会员分享,可在线阅读,更多相关《二级C语言上机改错题技巧总结(8页珍藏版)》请在金锄头文库上搜索。

1、二级 C 上机改错题技巧总结一、 改错题之方法步骤1. 上机考试中改错题占 30 分,一般有两个地方有错误,题型简单2. 做改错题时先看出错的地方,分析语法错误,如果能用 C 语言的语法判断出错误,改之即可3. 没有语法错误即分析逻辑错误,逻辑错误可以从几个方面分析:(1) 从题目的要求中找到错误,例如:题目要求计算 s=1+1/2+1/3+1/n,那么循环的范围就应该是 for(i=0;ip )2)类似题目:(5) return 关键字出错1)举例:上机题库 P101 第 54 题/*found*/Return(Value);2)类似题目:862. 格式出错(1) C 语言中的语句、基本结构

2、、函数等都有相应的规范格式,程序中将这些格式书写错误,将导致编译器无法识别程序,因此导致出错;(2) 语句末尾少分号1)分号是语句结束的标志,每个语句都必须以分号结尾2)举例:上机题库 P77 第 2 题第一个出错点/*found*/q=p+i3)类似的题目:28 题第一空、29 题第 1 空、34 题第 2 空、37 题第 2 空、48 题第 2空,49 第 1 空,59 第 2 空、70、79、97(3) for 结构格式出错1)for 结构的格式:for(表达式 1;表达式 2;表达式 3) 循环体语句 ,for 结构体中表达式必须以分号隔开,改错题中经常出现将 for 结构中分号错写为

3、逗号的情况;2)举例:上机题库 P77 第 3 题第 2 个出错点/*found*/for( i = 100, i ) 、小于(y)return x; int a,b,c;else return y; scanf(“%d%d”, c=fun(a,b);printf(“最大值为:%d”,c);(1) 函数的返回类型:1) 在上面的例子中 fun 函数的返回值是 int,如果将 int 改为 double,很明显是错误的。从两个地方来看,首先 return x;中 x 的类型必须和 fun 函数中的返回值相同,x 是整型。其次 c=fun(a,b);中 fun 函数将一个返回值赋值给了变量 C,说

4、明函数返回的值一定是整型。2) 记住:函数调用、函数的返回值和 ruturn 中数据类型必须一致!3) 类似题目:1.1、3.1、16.1、19.2、34.1、36.1、40.1、48.1、71 都死这样的错误,(注 1.1 表示第一题第一空) 。78、89、90、(2) return 后面的表达式及其类型:19.2、30.2、39.2(3) 函数传递的参数:int fun(int *x,int *y) main() if(*x*y)return *x; int a,b,c;else return *y; scanf(“%d%d”, c=fun(printf(“最大值为:%d”,c);1)一定

5、注意:传递的是值还是地址。比较上面两个例子大家很容易区别传递的是值还是地址,第一个例子调用函数的时候传递的是值,因此在 fun 函数的形参中 x 和 y仅仅是普通的变量,而第二个例子中调用函数的时候传递的是地址,因此在 fun 函数的形参中 x 和 y 就是两个指针变量。2)类似题目:5.1、13.1、17.2、20.1、25.2、52.1、56、84、85、100(4) 指针的使用:int fun(int *x,int *y) if(*x*y)return *x; else return *y; 1)在此例中 fun 函数的形参是 x 和 y,它们的类型是整型的指针,那么在 fun 函数的函

6、数体中使用到 x 和 y 的值时一定要区分:xy 比较的是 x 和 y 所存变量地址的大小,*x*y 才是比较值的大小。2)如果存在*x=x+y;的类似情况一定是错误的,必须要将赋值号的左右两边的类型变为一致。 3)类似题目:5.2、5.3、20.2、24.2、35.1、44.1、72、75、一定特别注意!6. 数组: (1) 数组下标的初始值:数组下标从零开始,到长度减一结束。1)考试技巧:当出错行在定义部分时,先检查该定义语句有没有语法错误,再看定义语句中的变量有没有赋初始值,最后看变量赋的初始值有没有正确。 2)定义初始值有窍门,遇到累加时,用来存放累加和的变量一般赋值为零,遇到求阶乘时

7、,用来存放阶乘值的变量一般赋值为一。3)8.1 中的变量 k 赋值为 1,但是数组的下标只能从 0 开始,因此将 1 改为 0 就行了。(2) 普通变量的初始值:1)依照上面的技巧,我们同样可以将它延伸到普通变量中。41.1 中需要将变量的值进行初始化,题目中有这样的要求:“输出主对角线元素之和” ,既然这样我们很肯定初始值应该为零,接着我们看看是给哪个变量赋值?看 printf(“sum=%d”,sum);输出的是 sum 的值,说明 sum 就是我们要补充在横线上的变量。2)10.1 也可以用同样的方法来分析。 (3) 数组和字符串长度减一:1)当使用数组中的元素时,最大值只能到数组长度减

8、一。字符串以0作为字符串的结束标志,因此取值最大也只能到字符串长度减一。25.2 中输出 printf(“%d”,aai);分析程序知道 i 在此时就是数组的长度,我们要输出数组中的元素,最大就只能到aai-1,因此改为 printf(“%d”,aai-1);就行了。2)4.1 和 38.2 中考查的是字符串长度减一的问题。(4) 数组下标往后走:1)当题目要求将一个数组中的元素直接赋值或是以某种方式复制到另一个数组中时,接受数据的数组中的下标要自增。9.1 中 sj=si;将 si中的值复制给 sj,联系上下函数段发现 i 是一个变量被 for 语句控制,从 0 开始直到遇到0 结束。i 一

9、直在加但是 j 没有变化,因此改为 sj+=si;即可。2)类似的题目有:25.2、26.2、32.1、50.2。7. 特例:(1) 部分题目的解答很特殊,需要根据上下文中的内容来解答题目:例如 10.1,在此题目中,定义了变量 t=0;根据下面程序中的循环,s=0.0,首先加的是变量 t 的值,即 s 的值是从 0.0 开始的,s 得到的值是:s=0.0+0.0+1.0/3+,观察表达式的值,这个少加了第一项 1.0 的值,所以变量 t 的初值不能是 0.0,只能是 1.0,或者是 1;(2) 21.2 中的这个题目中,表达式的值是从 2/1+3/2+5/3即表达式的规律是从第一项开始,以后

10、的每一项的分子是前一项的分子和分母的和,分母为前一项的分子。所以该题目的第二个空中的内容应该是:c=a;a+=b;b+=c;这一条语句中 a 代表的变量的分子,b 代表的是变量的分母,执行第一个表达式的值,把 a 的值赋值给变量 c,第二个表达式是把分子和分母的和相加复制给变量 a,第三个表达式是把原来 a 的值和变量 b的值相加之后得到的值赋值给变量 b,则变量 b 得到的值也为分子分母的和,不满足题意,而分母应该为原来分子的值。第三表达式的值应该改为:b=c;(3) 类似的题目有:33.2、40.2、43.1、47.1、50.18. 素数 11.1 、29、83(1) 判断一个数是否是素数的方法很多,的是只用掌握一种即可,首先掌握判断一个素数的方法;(2) 素数的定义:1)是自然数 2)只能被 1 和本身整除,2 到本身减一之间的数不能整除该数。(3) 判断 m 是否为素数的格式:for(i=2;inext ;第二个空改为:p=p-next;.(3) 不带头结点的链表:不带头结点的链表的第一个空的改为:p=h; 第二个空改为:p=p-next;.

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号