当前位置:首页 » 编程语言 » c语言易错点有哪些
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言易错点有哪些

发布时间: 2022-06-25 23:37:42

1. 学习c语言应注意哪些方面其重点和难点是哪些

C语言的基础部分,如运算符、三种基本结构的程序设计都和别的计算机编程语言大同小异,它的指针部分是区别于其他计算机语言的,算是C的重点和难点。学习时当然是应该注意多读例程并自己上机动手编程了。

2. c语言课程的总结

1.先学习C语言的基础知识。现在正在学C语言的在校学生可以直接进入第2步学习。
2.按照《C语言程序设计入门学习六步曲》进行上机练习。
3.在上机练习时要养成良好的编程风格。点击查看C语言的编程风格

4.积极参加C、C++兴趣小组,养成和老师与同学交流习惯,从而相互收益。有时别人不经意的一句话可能使你茅塞顿开--“一句话点醒梦中人”。

5.及时总结自己的学习经验,养成写C语言日记的习惯。软件有编程日记功能。

6.从网上或教材上找一个自己感兴趣的题目(选题时根据自己的能力,可先易后难,培养自己的成就感,如果有了成就感,即使再苦再累还是感觉C语言学习是一件快乐的事,同学们喜欢打游戏,经常通宵达旦地玩游戏也乐而不疲就是这个道理)进行实战训练,提高自己的C语言综合应用能力。

7. 由于C语言灵活、强大,初学者要全面地掌握它是不可能的,因此在学习C语言的过程中,不要在细枝末节上浪费精力(比如++、--用于表达式的计算,实际上是没有意义的),但一定要熟练掌握C语言的流程控制语句、数组、函数、指针等基础知识的应用,为学习面向对象程序设计打下坚实的基础。如果这些知识你学不好,要后续学习好C++、可视化的程序设计Visual C++或C++Builder就像空中楼阁,是不现实的。
C语言程序设计入门学习六步曲

笔者在从事教学的过程中,听到同学抱怨最多的一句话是:老师,上课我也能听懂,书上的例题也能看明白,可是到自己动手做编程时,却不知道如何下手。发生这种现象的原因有三个:

一、所谓的看懂听明白,只是很肤浅的语法知识,而我们编写的程序或软件是要根据要解决问题的实际需要控制程序的流程,如果你没有深刻地理解C语言的语句的执行过程(或流程),你怎么会编写程序解决这些实际问题呢?

二、用C语言编程解决实际问题,所需要的不仅仅是C语言的编程知识,还需要相关的专业知识。例如,如果你不知道长方形的面积公式,即使C语言学得再好你也编不出求长方形的面积的程序来。

三、C语言程序设计是一门实践性很强的课程,“纸上谈兵”式的光学不练是学不好C语言的。例如,大家都看过精彩自行车杂技表演,假如,你从来没有骑过自行车,光听教练讲解相关的知识、规则、技巧,不要说上台表演、就是上路你恐怕都不行。

出现问题原因清楚了,那么如何学习呢?请你看【C语言学习六步曲】

在程序开发的过程中,上机调试程序是一个不可缺少的重要环节。“三分编程七分调试”,说明程序调试的工作量要比编程大得多。这里以如何上机调试C程序来说明C语言的学习方法。

第一步、验证性练习

在这一步要求按照教材上的程序实例进行原样输入,运行一下程序是否正确。在这一步基本掌握C语言编程软件的使用方法(包括新建、打开、保存、关闭C程序,熟练地输入、编辑C程序;初步记忆新学章节的知识点、养成良好的C语言编程风格)。
初学者最容易犯的错误是:

1、没有区分开教材上的数字1和字母l,字母o和数字0的区别,造成变量未定义的错误。另一个易错点是将英文状态下的逗号,分号;括号()双引号""输入出入成中文状态下的逗号,分号;括号(),双引号“”造成非法字符错误。

2、C语言初学者易犯语法错误:使用未定义的变量、标示符(变量、常量、数组、函数等)不区分大小写、漏掉“;”、“{”与“}”、“(”与“)”不匹、控制语句(选择、分支、循环)的格式不正确、调用库函数却没有包含相应的头文件、调用未C声明的自定义函数、调用函数时实参与形参不匹配、数组的边界超界等。

3、修改C语言语法错误时要注意以下两点:

(1)、由于C语言语法比较自由、灵活,因此错误信息定位不是特别精确。例如,当提示第10行发生错误时,如果在第10行没有发现错误,从第10行开始往前查找错误并修改之。

(2)、一条语句错误可能会产生若干条错误信息只要修改了这条错误,其他错误会随之消失。特别提示:一般情况下,第一条错误信息最能反映错误的位置和类型,所以调试程序时务必根据第一条错误信息进行修改,修改后,立即运行程序,如果还有很多错误,要一个一个地修改,即,每修改一处错误要运行一次程序。
第二步、照葫芦画瓢
在第一步输入的C程序的基础上进行试验性的修改,运行一下程序看一看程序结果发生了什么变化,分析结果变化的原因,加深新学知识点的理解。事实上这和第一步时同步进行的,实现“输入”加深知识的记忆,“修改”加深对知识的理解。记忆和理解是相辅相成的,相互促进。

例如:将最简单的Hello World!程序
#include "stdio.h"
int main()
{
printf("Hello World!\n");
return 0;
}
中的

printf("Hello World!\n");

中的Hello World!改成你的姓名,运行一下程序,看有什么变化?

再如求1+2+3...+100的和的程序

#include <stdio.h>

main()

{

int i,sum=0;

for(i=1;i<=100;i++)
{
sum=sum+i;
}
printf("sum=%d\n",sum);
}

第1次将for(i=1;i<=100;i++)中的100改成50,运行一下程序,看有什么变化?

第2次将for(i=1;i<=100;i++)中的i++改成i=i+2,运行一下程序,看有什么变化?

找出程序结果变化的原因,就加深了对C语句的理解。

第三步、不看教材看是否能将前两步的程序进行正确地输入并运行。

在这一步要求不看教材,即使程序不能运行,看能否将其改正,使其能正确运行。目的是对前两步的记忆、理解进一步强化。

第四步、增强程序的调试能力

在教材中每章都有C语言初学者易犯的错误,按照易出错的类型,将教材中的正确的程序改成错误的程序,运行一下程序,看出现的错误信息提示,并记下错误信息,再将程序改成正确的,运行一下程序。这样反复修改,就能够学习C语言程序发生错误的原因和修改错误的能力。

注意:每次只改错一个地方,目的是显示发生该错误的真正原因,避免一次改动多个地方,搞清发生错误的真正原因,切记!!!!

注意:上机调试程序时要带一个记录本,记下英文错误提示信息和解决该错误问题的方法,积累程序调试经验,避免在编程犯同样的错误,切记!!!!。

例如,将Hello World程序中语句

printf("Hello World!\n");

中的;改成中文的分号;

运行一下程序,看有什么结果?

调试程序是一种实践性很强的事,光纸上谈兵是是没用的,就像游泳运动员只听教练讲解示范,而不亲自下水练习,是永远学不会游泳的。

即使在优秀的程序员编写程序也会犯错误的,可能事最低级的语法错误,但他能快速发现错误并改正错误,而我们C语言初学者面对错误提示,不知道发生了什么错误,如何改正,这就事差别。

第五步、研究典型的C语言程序,提高程序设计能力

C语言初学者遇到最多的困惑是:上课也能听懂,书上的例题也能看明白,可是到自己动手做编程时,却不知道如何下手。发生这种现象的原因是:所谓的看懂听明白,只是很肤浅的语法知识,而没有深刻地理解C语言的语句的执行过程(或流程)。

计算机是按照人的指令(编写的程序)去执行的,如果不知道这些C语句在计算机中是如何执行的,你怎么回灵活运用这些知识去解决实际问题呢?

解决问题的方法是要先理解C语言各种语句的流程(即计算机是如何执行这些语句的过程),然后研读现成C语言经典程序,看懂别人事如何解决问题的,以提高自己的程序设计能力。
第六步、研究课程设计源成序,提高C语言的综合应用能力.

3. C语言指针易错问题【附图+高分】

搞IT的人,都是夜猫子啊。。


1.这个题和你前面的提问,都是关于指针的问题,因为指针太灵活,你可以画个跳转图来标记每个指针指向的内容,这样就好理解了。


2.任何变量都需要有存储空间,每个存储空间对应一个存储地址,比如指针p,即p有一个存储地址,该存储地址对应的存储空间放的是p指向的地址;


3.*p表示p是个指针,即p的值是个地址,该地址指向一个字符串(姑且这样说),**k表示k是个指向指针的指针,即k的值也是一个地址,但是该地址指向的还是一个地址;


4.p=a,表示将a的存储地址赋给了p,此时p的存储空间放的是数组a的首地址;k=&p,表示将指针p的存储地址赋给了k;


5.*(p++)的意思是,先用p,后执行p自加操作,所以第一个printf输出的实质上是*p的值,不言而喻,输出的结果是2;


6.第二个printf:前面说过,k存放的是指针p的存储地址,那么*k就是p的存储空间内容(p的存储空间存放的是数组a的地址,但是注意,此时p的值已经加1了,也就是p指向了数组a的第二个元素),因此*(*k)就是数组a的第二个元素,结果就是输出4;


4. 求C语言中既简单又容易出错的地方。。。。。

这种地方很多,我就举些我认为是需要注意的地方吧.

一.先说C语言运算符方面的:
1.在"=="比较运算中,可能会把"=="写成"=",例如while(i==1)写成while(i=1)这将导致无限循环.

2.自增自减运算,注意前缀++与后缀++的区别,a++与++a的区别就在于前者的值是a原先的值,而后者是a自增1后的值.在具体的使用应更加注意.

3.注意逻辑运算符||与&&的短路效应.

4./与\的区别.

二.说下输入输出函数的:
1.scanf中,可能变量前面忘加&,例如int a; scanf("%d",a);的形式.

2.多个gechar函数出现在主函数中,导致有字符残留现象,会出现把回车符赋给字符变量的情况.

3.也是scanf函数里面的,出现int a,b; scanf("%d,%d",a,b);的情况,如果输入的是12空格45回车,则会导致a,b无法接收数据.正确应该输入
12,45回车.

三.说下程序设计初步里面重要函数的问题:
1.if,while,for等语句的主体语句必须是一个语句,即要有多个语句的话必须要用大括号括起来.

2.switch语句的子case语句后面忘加break的情形.

3.注意出现死循环,无限循环的情况.

四.还有就是编写要规范,常量标识符最好用大写,比如#define PI 3.14159 ,以和变量名区分开来.

还有很多,但问题总是你自己的,我们的问题不一定是你的问题,所以你自己要多多摸索.多多注意,养成良好的编程风格,多看书上的书写,希望能帮助到你.

5. 易错的C语言题(2)

函数point()里的*p的确是指向数组b[3]的位置,但是main()函数里的*p却始终是指向数组b的首地址b[0],除非你在main()函数里写语句p
+=
3,否则p不会边.
point()里的参数是指针,也就是传的是地址,他传过去的是指针p所指向的地址,这时候可以把point()里的指针p看成是p1(与main函数里的区别开),也就是有2个指针p和p1(point()里的指针)指向了数组b的首地址,在point()里改变的是p1指针,而不是p指针.

6. C语言学习中哪些是难点,哪些是易错点

我觉得最难得就是函数的定义和应用,易错的是当排列和指针一起结合时很容易搞混,要想克服困难只能多做题,开阔思路。

7. getch()的易错点

1.所在头文件是conio.h。而不是stdio.h。
2.在使用之前要调用initscr(),结束时要调用endwin()。否则会出现不输入字符这个函数
也会返回的情况。
3.在不同平台,输入回车,getch()将返回不同数值,而getchar()统一返回10(即 )
1)windows平台下ENTER键会产生两个转义字符 ,因此getch返回13( )。
2)unix、 linux系统中ENTER键只产生 ,因此getch返回10( )。
3)MAC OS中ENTER键将产生 ,因此getch返回13( )。
getch();并非标准C中的函数,不存在C语言中。所以在使用的时候要注意程序的可移植性。国内C语言新手常常使用getch();来暂停程序且不知道此函数来源,建议使用getchar()或者使用<stdlib.h>头文件中的system(PAUSE)调用系统命令暂停;(如果情况允许)代替此功能或更换一款编译器。

8. c语言中的易错点

具体语句太多了,就不一一指明,我就说一下整体的吧。
看看大括号有没有成对出现,这就是所谓的成对编程。
还有就是少分号,有些语句是不需要分号的
比如for
if记住几个特例就行,其他大部分都得补足分号。
最容易出错的还有指针,建议从一些简单指针题入手,掌握好规律就可以了。