C语言是国内外广泛使用的计算机语言,也是目前最流行的计算机语言之一,更是计算机应用人员应该熟悉和掌握的一种程序设计工具。同时C语言以其功能齐全、表达能力丰富、使用灵活方便、目标程序效率高、可移植性好以及双重性(既具有高级语言的优点,又具有低级语言的许多特点)等众多优点,而备受学习者的青睐。但是在自我学习和教学实践中发现,C语言牵涉到的概念复杂,规则繁多,使用随意,容易出错,从而令不少初学者感到束手无策。为此,笔者认为学习《C语言程序设计》应注意把握以下几点:
1 牢记基本规则
在初学者刚开始学习c语言时,不必在每一个细节上深究,应该把主要精力放在最基本、最常用的内容上。有时我们不必知道其“为什么”,只需知道“怎么做”即可。如果我们总在某些细节问题上纠缠不清,反复讨论其“为什么”,无疑使自己头脑更加糊涂,且有画蛇添足之嫌。
c语言源程序基本规则主要包括以下三点:
1、C语言源程序是由函数构成的,每一个源程序必须包含main函数。程序执行时,总是从main函数开始执行。另外,C语言没有特定的标准输入输出语句,要实现输入输出操作,需要调用输入输出库函数和头文件。
2、每个语句都是以分号为结束标记的,离开了分号就不能构成一个语句,也就是说分号是语句的必要组成部分。c语言书写格式自由,一行可以写多个语句,一个语句也可以写在多行。
3、良好的c程序,一般都是以“/* */’来注释的,以使程序具有可读性。除此之外,还有C语言的一些运算规则,由于比较复杂,在此不做一一介绍。
2 精心设计算法
写一篇优秀的文章,首先要写出大纲思路。编写一个良好的C程序,同样需要有一个良好的算法。一个良好的算法对于提高程序执行的效率起着事半功倍的效果。例如:计算l+2+3+… +l00;并非我们依次累加不能获得正确结果,只不过累加比较繁琐,而且累加过程中,倘若一步出错,就会弄的整盘皆输;如果我们采用高斯小时侯使用过的方法:l+2+3+...+100=(1+100)+(2+99)+..+(5O+51)=101+101+. .+101=50X101=5050。这样显然简便灵活,不易出错。算法并非全都是数值运算的,也有非数值运算算法。像人事管理、图书检索、翻译电报原文等都可以采用设计算法和编写C语言源程序来实现。算法是程序的灵魂,算法的好坏直接决定着整个程序的运行时间和运行结果的精确度。我们学会设计算法,也就是解决了“做什么”和“怎么做”的问题。倘若不了解算法,就根本谈不上程序设计。
3 认真分析程序
学好C语言还要逐步掌握分析程序的方法。因为要得到一个程序的结果,必须先读懂这个程序。读程序的过程中,还必须遵守C语言的基本规则,在此基础上再对程序进行深入思考,认真分析。例如:
main()
{
int a=0 ,b= 1,c;
c = b++ &&--b &&b--&& a++ ;
printf ("%d",c);
}
对此程序进行分析:我们知道算术运算符“++”和“-”的优先级高于逻辑运算符的“&&”,逻辑运算符“&&”的优先级高于赋值运算符“=”的优先级,所以,先进行算术运算,再进行逻辑运算,最后进行赋值运算。虽然,我们很容易从第三个“&&”后面知道此题的答案C肯定是0,但也不妨再计算一下三个“&&”之前的值和a、b的最终值。切忌只停留在答案的表面,应透过现象看本质。计算出第一个到第三个“&&”之前的值都是1,第三个“&&”后的值为0,a、b的最终值分别是1和0。我们要知道的并非仅仅是“鱼”,更重要的是“捕鱼”的方法。分析程序的过程中,如果不遵守C语言的基本规则(例:上例中运算符的优先级别),就无法得出程序的正确结果。分析程序的目的是,像学习一门外语一样,达到一定的语感。此时,再回头深入一些常见的细节(这些细节是需要通过较长期的实践才能熟练掌握的),解决开始时的“为什么”。
4 敢于编写程序
不下河,怎知水之深浅?我们知道了C语言的一些基本规律,设计出了程序的算法,具备了C语言一定的“语感”之后,就应该动手编写我们自己的程序。
最初编程时,切忌过早地滥用C语言的某些容易引起错误的细节。例如:空格的有无,++i和i++的乱用,嵌套的滥用以及一条语句写在多行等等。这样做一旦程序某个部位出错,很难查找,降低了程序的可读性。为什么有时我们不敢动手编写程序?是因为我们怕出错,不愿面对错误。一味地逃避,最终导致自己不敢编写程序。我们要不怕出错,怕的是每次都犯同样的错误。倘若不编写程序、不调试,又怎么能知道哪里会出错?又怎么能改正这些错误呢?编程熟练以后,应该要求自己采用多种方法达到同一结果,从而比较算法的好坏。要学活用活,举一反三。譬如韩信点兵之题,大意是:韩信让士兵排队,如果8人站一行,前面几行排满,最后一行只有5人;倘若9人站一行,前面几行排满,最后一行只有7人;最后让7人站一行,刚好全部排满。问:士兵总共至少多少个?可以采用各种循环语句来做,也可以采用循环语句与if语句嵌套来做。用while循环语句所做程序如下:
main()
{
int i=7;
while(i%8!=5||i%9!=7)
i+=7;
printf("The number of soldiersis%d.",i);
} 运行结果是士兵总共至少133个,大家不妨用别的方法来试一试。我们应该激励自己将所联想到的、具有趣味性的问题,尽可能地用算法表示出来,用C语言源程序编写出来,以增加学习的乐趣,推动自我学习的积极性。C语言程序设计是一门实践性很强的课程,既要掌握概念,又要动手编程。这门课的目的不是看“知不知道”,而是看“会不会干”。
5 上机调试程序
上机调试程序,并非仅仅为了结果,而应当从结果出发来进一步分析程序,使程序简洁化。上机调试程序可帮助我们更好地理解程序,改正自己的误解或疏忽大意,从而掌握编程的一些技巧。例如:
main()
{
int x=4,y=25,z=2;
z=(--y/++x )*z--;
printf(“%d”,z );
}
通过上机调试,我们知道z的最终值是7,为什么不是8呢?为了帮助理解,可将程序稍改如下:
main()
{
int x=4,y=25,z=2,t;
t=z=(--y/++x )*z--;
printf("%d,%d",t,z );
}
这样运行结果为:t和z的值分别是8和7。在此基础上我们再次分析上面那个程序,就会使人一目了然了。总之,C程序设计语言是一门表达能力极强的结构化语言,不仅适合于通常的程序设计,而且是开发系统软件的好语言工具。在学习中,我们应该由浅入深地学习,逐步掌握这个程序设计工具,为提高自己的逻辑思维能力和计算机编程水平打下坚实的基础。
注:
1. 本文作者吴英军,摘自网络
2. 本文程序不符合编程规范,编程规范请看教材第十章。
1 牢记基本规则
在初学者刚开始学习c语言时,不必在每一个细节上深究,应该把主要精力放在最基本、最常用的内容上。有时我们不必知道其“为什么”,只需知道“怎么做”即可。如果我们总在某些细节问题上纠缠不清,反复讨论其“为什么”,无疑使自己头脑更加糊涂,且有画蛇添足之嫌。
c语言源程序基本规则主要包括以下三点:
1、C语言源程序是由函数构成的,每一个源程序必须包含main函数。程序执行时,总是从main函数开始执行。另外,C语言没有特定的标准输入输出语句,要实现输入输出操作,需要调用输入输出库函数和头文件。
2、每个语句都是以分号为结束标记的,离开了分号就不能构成一个语句,也就是说分号是语句的必要组成部分。c语言书写格式自由,一行可以写多个语句,一个语句也可以写在多行。
3、良好的c程序,一般都是以“/* */’来注释的,以使程序具有可读性。除此之外,还有C语言的一些运算规则,由于比较复杂,在此不做一一介绍。
2 精心设计算法
写一篇优秀的文章,首先要写出大纲思路。编写一个良好的C程序,同样需要有一个良好的算法。一个良好的算法对于提高程序执行的效率起着事半功倍的效果。例如:计算l+2+3+… +l00;并非我们依次累加不能获得正确结果,只不过累加比较繁琐,而且累加过程中,倘若一步出错,就会弄的整盘皆输;如果我们采用高斯小时侯使用过的方法:l+2+3+...+100=(1+100)+(2+99)+..+(5O+51)=101+101+. .+101=50X101=5050。这样显然简便灵活,不易出错。算法并非全都是数值运算的,也有非数值运算算法。像人事管理、图书检索、翻译电报原文等都可以采用设计算法和编写C语言源程序来实现。算法是程序的灵魂,算法的好坏直接决定着整个程序的运行时间和运行结果的精确度。我们学会设计算法,也就是解决了“做什么”和“怎么做”的问题。倘若不了解算法,就根本谈不上程序设计。
3 认真分析程序
学好C语言还要逐步掌握分析程序的方法。因为要得到一个程序的结果,必须先读懂这个程序。读程序的过程中,还必须遵守C语言的基本规则,在此基础上再对程序进行深入思考,认真分析。例如:
main()
{
int a=0 ,b= 1,c;
c = b++ &&--b &&b--&& a++ ;
printf ("%d",c);
}
对此程序进行分析:我们知道算术运算符“++”和“-”的优先级高于逻辑运算符的“&&”,逻辑运算符“&&”的优先级高于赋值运算符“=”的优先级,所以,先进行算术运算,再进行逻辑运算,最后进行赋值运算。虽然,我们很容易从第三个“&&”后面知道此题的答案C肯定是0,但也不妨再计算一下三个“&&”之前的值和a、b的最终值。切忌只停留在答案的表面,应透过现象看本质。计算出第一个到第三个“&&”之前的值都是1,第三个“&&”后的值为0,a、b的最终值分别是1和0。我们要知道的并非仅仅是“鱼”,更重要的是“捕鱼”的方法。分析程序的过程中,如果不遵守C语言的基本规则(例:上例中运算符的优先级别),就无法得出程序的正确结果。分析程序的目的是,像学习一门外语一样,达到一定的语感。此时,再回头深入一些常见的细节(这些细节是需要通过较长期的实践才能熟练掌握的),解决开始时的“为什么”。
4 敢于编写程序
不下河,怎知水之深浅?我们知道了C语言的一些基本规律,设计出了程序的算法,具备了C语言一定的“语感”之后,就应该动手编写我们自己的程序。
最初编程时,切忌过早地滥用C语言的某些容易引起错误的细节。例如:空格的有无,++i和i++的乱用,嵌套的滥用以及一条语句写在多行等等。这样做一旦程序某个部位出错,很难查找,降低了程序的可读性。为什么有时我们不敢动手编写程序?是因为我们怕出错,不愿面对错误。一味地逃避,最终导致自己不敢编写程序。我们要不怕出错,怕的是每次都犯同样的错误。倘若不编写程序、不调试,又怎么能知道哪里会出错?又怎么能改正这些错误呢?编程熟练以后,应该要求自己采用多种方法达到同一结果,从而比较算法的好坏。要学活用活,举一反三。譬如韩信点兵之题,大意是:韩信让士兵排队,如果8人站一行,前面几行排满,最后一行只有5人;倘若9人站一行,前面几行排满,最后一行只有7人;最后让7人站一行,刚好全部排满。问:士兵总共至少多少个?可以采用各种循环语句来做,也可以采用循环语句与if语句嵌套来做。用while循环语句所做程序如下:
main()
{
int i=7;
while(i%8!=5||i%9!=7)
i+=7;
printf("The number of soldiersis%d.",i);
} 运行结果是士兵总共至少133个,大家不妨用别的方法来试一试。我们应该激励自己将所联想到的、具有趣味性的问题,尽可能地用算法表示出来,用C语言源程序编写出来,以增加学习的乐趣,推动自我学习的积极性。C语言程序设计是一门实践性很强的课程,既要掌握概念,又要动手编程。这门课的目的不是看“知不知道”,而是看“会不会干”。
5 上机调试程序
上机调试程序,并非仅仅为了结果,而应当从结果出发来进一步分析程序,使程序简洁化。上机调试程序可帮助我们更好地理解程序,改正自己的误解或疏忽大意,从而掌握编程的一些技巧。例如:
main()
{
int x=4,y=25,z=2;
z=(--y/++x )*z--;
printf(“%d”,z );
}
通过上机调试,我们知道z的最终值是7,为什么不是8呢?为了帮助理解,可将程序稍改如下:
main()
{
int x=4,y=25,z=2,t;
t=z=(--y/++x )*z--;
printf("%d,%d",t,z );
}
这样运行结果为:t和z的值分别是8和7。在此基础上我们再次分析上面那个程序,就会使人一目了然了。总之,C程序设计语言是一门表达能力极强的结构化语言,不仅适合于通常的程序设计,而且是开发系统软件的好语言工具。在学习中,我们应该由浅入深地学习,逐步掌握这个程序设计工具,为提高自己的逻辑思维能力和计算机编程水平打下坚实的基础。
注:
1. 本文作者吴英军,摘自网络
2. 本文程序不符合编程规范,编程规范请看教材第十章。