ImageVerifierCode 换一换
格式:DOCX , 页数:8 ,大小:18.98KB ,
资源ID:6179576      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-6179576.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(c语言易错知识Word文档下载推荐.docx)为本站会员(b****3)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

c语言易错知识Word文档下载推荐.docx

1、scanf(“%s”,&a);有学生想,输入语句的输入变量前一定要加取址符,所以这个语句里加了取址符,肯定不会出错。而结果却又恰恰错了,这是为什么呢?因为a在这里既表示数组名字,又表示数组首地址,它本身已经代表了地址,所以就不用再加取址符了。解决此类问题的办法就是在使用输入语句的时候要仔细观察,什么时候该加取地址符号,什么时候不该加,一定要搞清楚。1.3逻辑运算符&和位运算符&相混淆if(x&y)编辑人员此判别条件的本意是将x和y的“与”(&)运算结果作为条件。程序运行时,并不出错,但是结果却不对。原因是误用按位“与”运算符&替代了“与”运算符&,这种错误初学者很容易犯,但是又十分隐秘,在某些

2、特殊情况下甚至可以得出正确的结果,所以更具有迷惑性。位运算符是C语言独特的一种运算符,其中“&”表示对两个操作数按二进制位进行“与”运算,规则是:0&0=0,0&1=0,1&0=0,1&1=1。如6&5=4,其中6变为00000110,5变为00000101,按位“与”运算的结果为100即4。1.4误把赋值=当恒等=if(a=0)误写成if(a=0)。上述写法将导致条件始终为假,进入不了if语句条件为真的分支。编程的时候要仔细,要遵守c语言的语法规则。1.5条件语句(if)和循环条件语句后误加分号if(xy);x=y;这样相当于满足条件执行空语句。下面的x=y语句将被无条件执行。一般情况下if

3、()条件后不需要加分号。for(i=1;i10;i+);上述for语句相当于满足条件执行空语句,真正的循环语句则没有被执行。一般情况下for()循环条件后不需要加分号。这两个都是初学者容易犯的错误,又很难察觉出来。1.6循环语句中改变了循环变量的值求水仙花数main() int i,a,b,c;for(i=100;1000;i+) a=i%10;i=i/10;b=i%10;c=i%10;/*i的值被改变*/if(a*a*a+b*b*b+c*c*c=i)printf(“%d”,i);此程序看起来思路非常正确,可是高度的时候就是死循环,运行不出结果。为什么呢?仔细观察可知,在循环语句里,循环变量i

4、每次进入循环后都被改变了,导致了i永远都满足循环条件,所以就死循环了。为了避免此类错误,在编程时应尽量避免在循环语句中改变循环变量。1.7作为输出结果的变量没有赋初值求数组中的最大值能最大值的下标 int a10=8,2,3,4,5,6,3,7,max=a10,m,i;for (i=0; imax)max=ai; m=i;printf(“%d%d”,max,m); 程序看似一点毛病都没有,上机调试也都通过,但是结果却不对。原因就在下标变量m没有赋初值,系统随机赋了初值,导致结果错误。给m赋初值0就可以了。1.8初值赋了,但是赋的位置不对求100以内的完数s=0;=100; for(j=1;jb

5、)这一段代码的本意是比较字符串a和字符串b的大小,但是这样比较是不正确的,应该改成 if(strcmp(a,b)0)解决这类问题关键是要记住字符数组名字代表的是字符数组的地址,是常量,不能直接进行复制等操作。这是个容易忽视的地方,也是考试经常出题的地方,希望引起大家的注意。1.13函数调用时参数传递出错void swap(int a,int b) int t;t=a;b=t;此段代码的本意是一个交换两个变量值的函数,但实际上这个函数完不成这个功能,因为本函数传递的是数值,函数调用时传递数值只是对实际参数值的一个拷贝,并不能改变实际参数的值,要完成此功能必须传入地址。因此上例应该为:void s

6、wap(int *a,int *b)t=*a;*a=*b;*b=t;1.14忘记加头文件求1-1/3+1/5-1/7,求此序列的和,直到最后一项的绝对值小于1e-6为止。程序如下: double s=0,x=1;long k=1;int flag=1;while(fabs(x)1e-6)s+=x;k+=2;flag=-flag;x=flag/k;学生在调试这个程序时,未发现错误,可就是结果运行不出来。其实程序是没有任何错误。解决此类问题的办法就是要在程序的前面加上一个头文件#include“math.h”,如果不加这个头文件的话,系统将不认识fabs这个函数。1.15函数定义中未声明形参类型这

7、种情况下调用函数,系统默认把其处理为整型参数,若没有声明函数的类型,返回值也为整型。调用时所有参数以整型传递,会出现参数不匹配的情况。解决办法就是明确定义函数参数的类型和个数。2教学建议结合实际教学过程中出现的问题,我们认为教师可以向学生提出几点建议:(1) C语言编程是一个循序渐进的过程。不要好高骛远,一开始学,就想编写那些很复杂很大的程序,这是不切合实际,要踏踏实实打基础。(2) C语言一定要仔细,不能毛毛草草,该写逗号的地方,就不能写成分号。(3) 学习C语言的过程中,要善于总结、积累。一是积累一些编程的方法、思想,下次再遇到类似的问题,就会有思路。二是要积累编程过程中遇到的错误,最好准备一个小本子,把它记录下来。下次再遇到这样的问题,就会解决了,这样会节省很多时间。3 结束语 以上是笔者教学实践过程中总结出来的学生学习C语言比较容易出错的知识点,这些错误大多是计算机编译时无法检测出来的,而大家又很难发现的错误。其中“循环语句中改变了循环变量的值”和“赋初值的位置不对”,是笔者在实际教学过程中经常发现的错误。笔者总结出的这些问题,希望对C语言教学有一些帮助。

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2