C语言程序设计入门学习六步曲

[复制链接]
 楼主| 21man 发表于 2007-4-19 09:49 | 显示全部楼层 |阅读模式
初学者遇到最多的困惑是:上课也能听懂,书上的例题也能看明白,可是到自己动手做编程时,却不知道如何下手。发生这种现象的原因有三个:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;一、所谓的看懂听明白,只是很肤浅的语法知识,而我们编写的程序或软件是要根据要解决问题的实际需要控制程序的流程,如果你没有深刻地理解C语言的语句的执行过程(或流程),你怎么会编写程序解决这些实际问题呢?<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;二、用C语言编程解决实际问题,所需要的不仅仅是C语言的编程知识,还需要相关的专业知识。例如,如果你不知道长方形的面积公式,即使C语言学得再好你也编不出求长方形的面积的程序来。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;三、C语言程序设计是一门实践性很强的课程,“纸上谈兵”式的光学不练是学不好C语言的。例如,大家都看过精彩自行车杂技表演,假如,你从来没有骑过自行车,光听教练讲解相关的知识、规则、技巧,不要说上台表演、就是上路你恐怕都不行。<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;出现问题原因清楚了,那么如何学习呢?请你看【C语言学习六步曲】&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;特别提醒:在使用本方法之前一定要先阅读C语言的相关内容,要初步掌握相关知识的要点,然后按下述方法学习,可以达到理解、巩固、提高C语言知识和提高程序调式能力的目的。<br /><br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;第一步、验证性练习<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在这一步要求按照教材上的程序实例进行原样输入,运行一下程序是否正确。在这一步基本掌握C语言编程软件的使用方法(包括新建、打开、保存、关闭C程序,熟练地输入、编辑C程序;初步**新学章节的知识点、养成良好的C语言编程风格)。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;使用《Turbo&nbsp;C/C++&nbsp;for&nbsp;Windows&nbsp;集成实验与学习环境》软件可以很方便地看着软件集成的《C语言入门教程》输入练习其中的程序例题。具体使用方法参见软件帮助部分。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;初学者最容易犯的错误是:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1、没有区分开教材上的数字1和字母l,字母o和数字0的区别,造成变量未定义的错误。另一个易错点是将英文状态下的逗号,分号;括号()双引号&quot;&quot;输入出入成中文状态下的逗号,分号;括号(),双引号“”造成非法字符错误。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2、C语言初学者易犯语法错误:使用未定义的变量、标示符(变量、常量、数组、函数等)不区分大小写、漏掉“;”、“{”与“}”、“(”与“)”不匹配、控制语句(选择、分支、循环)的格式不正确、调用库函数却没有包含相应的头文件、调用未声明的自定义函数、调用函数时实参与形参不匹配、数组的边界超界等。<br />&nbsp;&nbsp;&nbsp;&nbsp;3、修改C语言语法错误时要注意以下两点:<br />&nbsp;&nbsp;&nbsp;&nbsp;(1)、由于C语言语法比较自由、灵活,因此错误信息定位不是特别精确。例如,当提示第10行发生错误时,如果在第10行没有发现错误,从第10行开始往前查找错误并修改之。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;(2)、一条语句错误可能会产生若干条错误信息只要修改了这条错误,其他错误会随之消失。特别提示:一般情况下,第一条错误信息最能反映错误的位置和类型,所以调试程序时务必根据第一条错误信息进行修改,修改后,立即运行程序,如果还有很多错误,要一个一个地修改,即,每修改一处错误要运行一次程序。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;第二步、照葫芦画瓢<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在第一步输入的C程序的基础上进行试验性的修改,运行一下程序看一看程序结果发生了什么变化,分析结果变化的原因,加深新学知识点的理解。事实上这和第一步时同步进行的,实现“输入”加深知识的**,“修改”加深对知识的理解。**和理解是相辅相成的,相互促进。<br /><br />&nbsp;&nbsp;&nbsp;例如:将最简单的Hello&nbsp;World!程序<br />#include&nbsp;&quot;stdio.h&quot;<br />int&nbsp;main()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;Hello&nbsp;World!\n&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;<br />}<br />中的<br /><br />printf(&quot;Hello&nbsp;World!\n&quot;);<br /><br />中的Hello&nbsp;World!改成你的姓名,运行一下程序,看有什么变化?<br /><br />再如求1+2+3...+100的和的程序<br /><br />#include&nbsp;&ltstdio.h&gt<br /><br />main()<br />{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;i,sum=0;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;for(i=1;i&lt=100;i++)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sum=sum+i;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;sum=%d\n&quot;,sum);<br />}<br /><br /> <br /><br />第1次将for(i=1;i&lt=100;i++)中的100改成50,运行一下程序,看有什么变化?<br /><br />第2次将for(i=1;i&lt=100;i++)中的i++改成i=i+2,运行一下程序,看有什么变化? <br /><br />找出程序结果变化的原因,就加深了对C语句的理解。<br /> <br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;第三步、不看教材看是否能将前两步的程序进行正确地输入并运行。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在这一步要求不看教材,即使程序不能运行,看能否将其改正,使其能正确运行。目的是对前两步的**、理解进一步强化。<br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;第四步、增强程序的调试能力<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在《Turbo&nbsp;C/C++&nbsp;for&nbsp;Windows&nbsp;集成实验与学习环境》集成的教材中每章都有C语言初学者易犯的错误,按照易出错的类型,将教材中的正确的程序改成错误的程序,运行一下程序,看出现的错误信息提示,并记下错误信息,再将程序改成正确的,运行一下程序。这样反复修改,就能够学习C语言程序发生错误的原因和修改错误的能力。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;注意:每次只改错一个地方,目的是显示发生该错误的真正原因,避免一次改动多个地方,搞清发生错误的真正原因,切记!!!!<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;注意:上机调试程序时要带一个记录本,记下英文错误提示信息和解决该错误问题的方法,积累程序调试经验,避免在编程犯同样的错误,切记!!!!。<br /><br />例如,将Hello&nbsp;World程序中语句<br /><br />printf(&quot;Hello&nbsp;World!\n&quot;);<br /><br />中的;改成中文的分号;<br /><br />运行一下程序,看有什么结果?<br /><br />C语言的错误信息的形式:(下面例子是的Turobo&nbsp;C2.0错误信息,如图1)<br /><br />错误&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;文件名&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;行号&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;冒号&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;错误内容<br /><br />↓&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;↓&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;↓&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;↓&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;↓<br /><br />Error&nbsp;E:\WinTc\WinTc\frist.c&nbsp;&nbsp;&nbsp;5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;&nbsp;&nbsp;Function&nbsp;call&nbsp;missing)&nbsp;in&nbsp;function&nbsp;main<br /><br /><br />C语言的错误信息的形式:(下面例子是Visual&nbsp;C++6.0&nbsp;错误信息,如图2)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;文件名&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;行号&nbsp;&nbsp;&nbsp;&nbsp;冒号&nbsp;&nbsp;错误代码&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;冒号&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;错误内容<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;↓&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;↓&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;↓&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;↓&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;↓&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;↓<br /><br />e:\wintc\wintc\frist.c&nbsp;(&nbsp;5&nbsp;)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;error&nbsp;C2143&nbsp;&nbsp;&nbsp;:&nbsp;syntax&nbsp;error&nbsp;:&nbsp;missing&nbsp;')'&nbsp;before&nbsp;';'<br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;软件集成了高校教学用的最多的两个编译器Visual&nbsp;C++6.0和Turbo&nbsp;c&nbsp;2.0,支持C、标准C、C++、标准C++、WINDOWS&nbsp;C程序的编辑、编译、和调试。软件根据用户输入程序的类型智能选择编译器,不用使用者干涉。<br /><br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;调试程序是一种实践性很强的事,光纸上谈兵是是没用的,就像游泳运动员只听教练讲解示范,而不亲自下水练习,是永远学不会游泳的。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;即使在优秀的程序员编写程序也会犯错误的,可能事最低级的语法错误,但他能快速发现错误并改正错误,而我们C语言初学者面对错误提示,不知道发生了什么错误,如何改正,这就是差别。<br /><br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;第五步、研究典型的C语言程序,提高程序设计能力<br /> <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;经过上述过程的学习,我们已经学会了C语言各种语句的流程(即计算机是如何执行这些语句的过程),然后就可以研读别人编写C语言经典程序,看懂别人是如何解决问题的,学习解决问题的方法和程序设计技巧,提高自己的程序设计能力。<br />&nbsp;&nbsp;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;第六步、研究课程设计源成序,提高C语言程序设计能力和调试较大程序的能力。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;C语言课程设计的目的:是让学生综合利用所学的C语言知识,解决一些接近实际问题题目,提高程序设计和调试较大程序的能力,为进一步进行软件开发打下坚实的基础。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;C语言好学吗?<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;C语言好学吗?初学者常常问这个问题。答案很简单,对C语言感兴趣,有强烈的学习欲望,就容易学。如果不感兴趣,再简单的知识也学不会。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;试想一下,现在有几个学校教学生打游戏呢?答案是否定的,可是很多学生都会打游戏,而且还经常交流打游戏的心得体会。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;如果你对C语言感兴趣,为什么不把学习打游戏的经验用到学习C语言呢?如果这样的话,C语言还难学吗?<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;最后送C语言初学者一句话来共勉:首先要相信自己是有能力学好C语言的,然后不惜一切代价把这种能力表现出来,你就成功了。做任何事,何尝不是这样呢?<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;兴趣是学习C语言的最大动力,学习方法给你指明努力的方向,让你事半功倍。如果你感觉对你有帮助的话,请回帖支持,让更多的朋友知道它,谢谢支持!!!<br />
kokuu 发表于 2007-4-19 10:12 | 显示全部楼层

我是大一的,刚刚接触C语言,你说的挺有道理的~~~
大海孤星 发表于 2007-4-19 15:40 | 显示全部楼层

我一真都想学.可就是无从下手.谢谢指点.

  
steelhzg 发表于 2007-4-22 19:28 | 显示全部楼层

其实C语言没有那么难

但是推荐《the&nbsp;c&nbsp;programming&nbsp;language》<br />从这本书学起比较好。
木不一人 发表于 2010-10-10 05:41 | 显示全部楼层
c语言也就那回事
孤傲雕 发表于 2010-10-10 06:50 | 显示全部楼层
没有难么难,呵呵
110xia 发表于 2010-10-10 08:56 | 显示全部楼层
肤浅,
C的用法,在于 创造........
hpzax 发表于 2010-10-12 09:54 | 显示全部楼层
我的模电很好,一真都想学C.可就是无从下手.谢谢指点
雪山飞狐D 发表于 2010-10-12 12:09 | 显示全部楼层
<C语言现代方法>
liujianczl 发表于 2010-11-6 16:48 | 显示全部楼层
刚接触,有些看不懂的,还是谢谢了!
276555542 发表于 2010-11-9 16:11 | 显示全部楼层
li云中漫步 发表于 2010-11-10 21:31 | 显示全部楼层
不错
ledone 发表于 2010-11-11 18:12 | 显示全部楼层
今天仔仔细细的研读了一遍,不管说的是不是每个人都认同,我感觉是很有道理的,尤其是“要相信自己是有能力学好C语言的”这句话,只要想学,没什么是困难的,要相信自己能够成功,那你就已经成功了一半。。。。
维修十年 发表于 2010-11-11 23:48 | 显示全部楼层
学习单片机仅一天的新手,谢谢LZ,说的很好。
雪山飞狐D 发表于 2010-11-12 00:25 | 显示全部楼层
电子系C语言的关键是学会用C语言解决事件顺序与逻辑问题而不是单纯计算
adofe 发表于 2010-11-12 17:32 | 显示全部楼层
c语言还是比较好学的。
小小遥遥 发表于 2010-11-15 17:31 | 显示全部楼层
LZ的方法很对,C语言开始是模仿,后来独立写程序,最后学习算法,到最后就能独立设计大程序咯,做什么都是循序渐进,从简单到复杂,从复杂到简单,霍霍:)
simplekiller 发表于 2010-11-19 08:07 | 显示全部楼层
huanyou163 发表于 2010-11-21 23:20 | 显示全部楼层
多动手就是硬道理!
liang7143 发表于 2010-11-22 12:20 | 显示全部楼层
C语法的东西,还是比较容易懂~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

11

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部