| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 38403 人关注过本帖, 6 人收藏
标题:与C的邂逅——初学C语言的收获与感受
只看楼主 加入收藏
zxs0707
Rank: 1
等 级:新手上路
帖 子:103
专家分:0
注 册:2005-4-3
收藏(6)
 问题点数:0 回复次数:349 
与C的邂逅——初学C语言的收获与感受

大家好,我是北工大计算机学院03级的普通学生。作为一名C语言的初学者,我很高兴也很荣幸能把自己学习C的收获和感受与大家分享!

和本文的读者一样,我很早就对programming充满兴趣。上中学后,我一直与QB为伴,常因为亲手实现书上示例没有做到功能而欣喜。刚刚上大学不久,我又遇到了鼎鼎大名的C,三个月学下来,感慨良多,也有些收获。现将它们列在下面,以供大家参考。

依照我的经验,学习一门程序设计语言一般是从模仿教科书示例开始的,继而尝试修改、增补示例程序,然后就可以独立于示例编写简单的程序了。在这个过程中比较重要的一点就是不要被教科书束缚。比如你可以使代码的格式更清晰、更美观,同样的功能可以用不同于示例的方法实现……当然,这是一个循序渐进的过程,不必急于求成,要扎扎实实记住学过的每条C语言规则,在模仿和思辨中养成良好的程序设计习惯。

以下是经验丰富的程序员、《C程序设计教程》和我个人总结的一点经验,希望能够对大家有所帮助:(本文完整示例能够在TC 2.0下正常运行)

I. 关于代码的格式:

1. 预先输入配对符号和易忘符号,如成对的大括号、双引号、小括号以及分号等
2. 大括号“{” 和“}”各自独占一行并与上一行首字母对齐;
3. 左大括号“{”的下一行进行整段缩进,直到遇到右大括号“}”,如果有多对大括号“{”“}”,重复以上规则;
4. 在每个左小括号“(”前加一个空格,每个逗号“,”后加一个空格,在实现不同功能的代码块之间加一个空行;
5. 控制每一行代码的长度,使其不超过屏幕显示的范围,当某一行即将到达屏幕边界时,按下回车键并缩进至与上一行行首对齐;

示例:

#include<stdio.h> main () { /*大括号独占一行*/  int icount=0; /*开始整段缩进*/ /*适当的空行用来使代码结构清晰*/  clrscr (); /*清屏函数*/  for (; icount<=10; icount++)  {   printf (“Value of icount is %d.\n”, icount);  } /*小括号前和逗号后的空格使代码不拥挤,更清晰*/    return 0; }

II. 关于数据类型和变量:

1. 定义变量时应了解各种数据类型的可表示范围,考查其是否符合对输出结果数据精度的要求;
2. 尽量用少而有意义的一组字母、数字和下划线为变量命名,这样既可以减轻输入强度,又可以使代码便于理解,以利出错维护和功能扩展;
3. 为区分不同类型的变量,命名时应该在已经确定的变量名前加一个表示该变量类型的小写字母,如“int icount;”,这样当你在后面的代码中看到它时,就知道它是一个用作计数器的整型变量;
4. 用作部分和(累加器),部分积(累乘器)的变量最好在定义时就分别初始化为0和1, 如“int isum=0;”;

III. 关于表达式的表示:

1. 不要忘记乘号“*”;
2. 当一个表达式里的符号(尤其是关系运算符)多得使你无法确定结果时,使用小括号限定运算顺序;
3. 使用相等测试运算符“==”时,将常量放在左边,如“if (0==ichoice)”

IV. 关于一些基本语句:

1. printfscanf:不要忘记“f”;
2. 试着找一找循环次数与已经存在的变量之间的关系,如果可以,你就能节省一个计数器变量的使用;
3. 综合考虑for循环的循环控制变量和循环终止条件,保证程序执行时循环了预定次数,防止死循环;
4. 多层for循环嵌套时,注意内层循环的循环控制变量的初始化,即下一次外层循环开始时,内层循环的循环控制变量是否必须回零或被赋值为1等等,如果不必,可以省略循环控制变量的初始化,如“for (; icount<=5; icount++)”,否则坚决不能省略;

示例:

/*本示例将在屏幕上显示3*3共6个数*/ #include<stdio.h> main () {  int iRow=1, iColumn=1;  clrscr ();  for (; iRow<=3; iRow++)  {   for (iColumn=1; iColumn<=3; iColumn++)   { /*内层循环控制变量必须初始化,读者可以试着去掉iColumn=1看结果*/    printf (“%d\t”, iColumn); /*循环体,显示每行各列的数*/   }   printf (“\n”); /*显示一行后换行*/  }  return 0; }

5. 使用输入标记控制的while循环时,不要忘记在内层接受用户输入;

示例(部分):

printf (“Enter grade, -1 to end: ”); scanf (“%d”, &igrade); while (igrade!=-1) {  isum+=igrade;  printf (“Enter grade, -1 to end: ”);  scanf (“%d”, &igrade); }
6. 不要忘记switch语句中每个case里的break
7. 根据实际情况使用breakcontinue控制循环,不要习惯性地使用break

我推荐大家借鉴上面的经验,也希望大家能够学到良好的程序设计风格,养成良好的程序设计习惯,而不只是满足于完成既定任务。

我在前面提到过,学习程序设计是一个循序渐进的过程。在大家学习完C的基本规则以后(即数据类型、运算符、表达式、基本语句、流程控制等,一般都安排在教科书中函数、数组等章节之前),应该已经形成了一定的程序设计风格,也积累了一些解决实际问题的方法。在接下来的学习中很重要的一点是不要被习惯禁锢,因为后面会出现很多能更高效解决问题的方法,错过它们将是你极大的损失。

函数就是一个很重要的概念。正如很多教科书里提到的,它能够使程序模块化,使主函数结构清晰、各部分分工明确,最起码能够避免多次输入功能相同的一大段语句。我个人认为,从囊括所有语句的“流水账”到“众星捧月”的模块化程序的过渡很重要。在前面的学习中,大家已经习惯把所有的语句按顺序罗列在main函数中,即使学到了函数的调用和返回,形参和实参等等概念也很难用上,有时用上可能还会事倍功半。不过没关系,我们可以先从以前编写的代码下手,把住函数中多次重复的语段择出来定义成新的函数,同时结合教科书上的示例,逐渐习惯函数的调用和返回。以后再编写程序时,可以先在脑中或纸上大概描绘一下程序的模块化结构、各函数的功能、需要的参数等等,编写时直接写出各个函数即可。

其他的概念如指针、链表等理解起来问题不大,但在使用中可能会遇到很多问题,还是要多看多练,看练结合,重在实际操作,注意平时积累。 希望大家能在不断的学习中,能有不断的收获

搜索更多相关主题的帖子: C语言 收获 初学 邂逅 
2005-04-11 18:19
ysfabm
Rank: 1
等 级:新手上路
威 望:1
帖 子:274
专家分:0
注 册:2004-11-9
收藏
得分:0 
楼主总结得很好!让人受益非浅!帮你置顶了!

[此贴子已经被作者于2005-4-11 18:53:25编辑过]



精诚所至,
       金石为开!
      PLM技术社区: [url=http://www.]www.[/url] 最专业的PLM技术讨论社区。
2005-04-11 18:52
zxs0707
Rank: 1
等 级:新手上路
帖 子:103
专家分:0
注 册:2005-4-3
收藏
得分:0 
谢谢了 
感觉你很有大哥风范呢 
他日必成大气  我说的可是真的呢 

生命总有些不经意的时刻用来淡淡微笑
2005-04-11 18:57
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
收藏
得分:0 
你不会因为对方刚刚失去恋爱又是个女孩子还这么XXX的吧 其实C语言最大的优点,同时也是他最大的缺点: 太过于灵活. 比如说: "不要忘记switch语句中每个case里的break;" 这点不是一定是一个很好的习惯. 有很多时候我是故意忘记这里的break; 的 "不过没关系,我们可以先从以前编写的代码下手,把住函数中多次重复的语段择出来定义成新的函数,同时结合教科书上的示例,逐渐习惯函数的调用和返回。以后再编写程序时,可以先在脑中或纸上大概描绘一下程序的模块化结构、各函数的功能、需要的参数等等,编写时直接写出各个函数即可。" 如果我没理解错你的意思是说自己写一些功能简单但是又是经常用的函数,比如排序啦等等什么的. 表面上看来这样是充分利用了现有资源而不用重复劳动,但是很遗憾,以前我也沉迷于这种"快捷""简单"的学习方式之中,但是时间一久,我就会连这个函数是怎么实现的都忘记了,更加不用说再写一个优化版本了. 所以对于一个刚刚初学C的朋友来说,一段时间内的重复劳动是很有必要的.

淘宝杜琨
2005-04-11 19:06
zxs0707
Rank: 1
等 级:新手上路
帖 子:103
专家分:0
注 册:2005-4-3
收藏
得分:0 
看了YOU的回复 还真有点你说的感觉  呵呵 

生命总有些不经意的时刻用来淡淡微笑
2005-04-11 20:36
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:0 
严谨的代码风格是好事,也是必须要做到的。但是,一味固执地追求也会失去学C的很多乐趣不是吗?神

九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2005-04-12 21:04
LastHeaven
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2005-4-8
收藏
得分:0 
总结得很好啊,顶

您所拨打的用户正在革命中。。。请您稍候再拨。。。 坚强依然!永不言苦!永不言败!睇透基础C语言先!—— 编程编程再编程! 嘎嘎
2005-04-14 11:24
yingwu9420
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2005-4-15
收藏
得分:0 
恩,说的可以.但是像我来说啊,能完成任务就不错啦!每次交作业我都没写运行结果给老师看,所以就更谈不上良好的编程习惯啦.我也是新来的,希望以后能和各位多多探讨!特别是数据结构.....
2005-04-15 00:59
chaoqan
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2005-4-9
收藏
得分:0 
好习惯可以让自己在编程的道路上受益终生  一定要养成编程的好习惯
2005-04-16 15:40
qxcyz
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2005-4-11
收藏
得分:0 
ding  

O米陀佛
2005-04-16 23:34
快速回复:与C的邂逅——初学C语言的收获与感受
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.042480 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved