㈠ C语言里面的算法觉得很难,这样才能学好算法
学好C语言首先要学好他的语法,就比如说英语和语文,你必须要学好他的语法啊,并且要会用他的”单词”,然后就是算法了,这其中要有数学的计算和思想,但是你可以学好的,如果你学好VB那就更好了,因为VB和C语言、很都语法都是共通的.C重要的是思想和算法..
如果要成为高手的话,那就必须数学基础扎实,因为要到高级的话会用到很多的函数问题,编程也要逻辑性好,而且C就是一种模式,找到了很容易学的。
说实在的,有些东西当初我拿到书的时候是天天琢磨,月月思考,还真别说,有些当初我以为超级老难的问题就愣是这么给琢磨出来了。不过前提是我的数学和逻辑思维真的不错。
慢慢来啊,呵呵,就像当初我以为我自己也学不会,结果还是让我给征服了。其实入门比较困难一些,这都是过程,保持好的心态,如果真的想学就不要放弃,经过时间的积累我想一切都会晴朗的。
㈡ 如何学习c语言程序设计
C语言的基础语法包括数据类型、运算符、表达式、数组、逻辑运算、函数、指针等。学习这些先买一本入门书籍,个人还是推荐经典的《C语言》,既然挺多大学选择这本书作为教材,总归有其合理之处吧。这本书对知识点的介绍都比较浅显,但涵盖面比较广。边学语法便敲案例,看着代码在计算机上运行起来是不是也有点小激动。这样便有了继续学习下去的动力。
C语言深入的话推荐《c primer plus》,你会发现有些地方晦涩难懂,不要被疑问绊住脚步,浪费太多时间在细枝末节的地方。C语言只是你进入新世界的第一步而已,而编程的世界远比你想象的更广阔,更有意思。《c primer plus》更适合作为一本字典使用,放在电脑旁,方便随时查阅。
㈢ C语言算法设计主要需要掌握哪些
你如果只问C语言的话,它与其他语言最大的不同就是指针了,很多针对C语言的算法都会用到它,每种语言虽然大体相同但都有独特之处的。我们老师常说:
不懂指针的人,就等于不会C/C++
不懂委托、引用的人,就等于不会C#
除此之外就是算法设计的共同基础了,像楼上所说的,
你需要熟悉各种数据结构的特性,才能在设计你的算法时用最适合的方法
你需要熟悉各种变量的结构,C语言是可以手动管理内存的,灵活掌握物理地址与逻辑地址对C语言算法设计很有帮助
你需要熟悉各种循环控制结构,这才是程序的真谛,让计算机代替人完成重复性的工作,而算法就是教机器该如何这样做的命令集
㈣ 如何学好C语言
所有初学者面临的第一个问题便是:如何选择教材。好的开始是成功的一半,选择一本优秀的教材是事半功倍的关键因素。不幸的是,学校通常会帮你指定一本很差劲的C语言课本;而幸运的是,你还可以再次选择。没有学习交流地方可以来
所以我建议初学者应该以Visual C++ 6.0(不是VisualC++ .NET)或者Dev C++作为主要的学习环境,而且千万不要在IDE的使用技巧上过多纠缠,因为今后你一定要转向Unix环境的。Visual C++ 6.0使用很方便,调试也很直观,但其默认的编译器对C标准的支持并不好,而Dev C++使用gcc编译器,对C99的标准都支持良好。使用顺带提一下,很多大学的C语言课程还在使用Turbo C 2.0作为实验环境,这是相当不可取的,原因其一是TC 2.0对C标准几乎没有支持,其二是TC 2.0编译得到的程序是16位的,这对今后理解32位的程序会造成极大的困扰(当然,用djgpp之类的东西可以使TC 2.0编译出32位程序,不过那过于复杂了)。
等你学完一本C语言的教材,你一定要转向Unix平台继续学习,几乎所有的C语言高级教程都是基于Unix平台的(比如《C专家编程》)。转变的过程是痛苦的,你需要面对的是各种纷繁复杂的命令,完全不同于Windows平台的思考方式,但是这种痛苦是值得的。Unix与C是共生的,Unix的思考方式和习惯更加符合C语言的思考方式和习惯。在Unix下,你可以找到无数优秀的源代码供你尽情阅读,你可以方便地查看某个库函数的联机手册,还可以看到最优秀的代码风格(说到代码风格,我会专门写一篇文章详细叙述)。
归结起来就是一句话:初学C语言,建议使用Windows系统和集成开发环境,在准备向“高手”方向努力时,请先转向Unix平台。
三、万事俱备,你就是东风
书已选定,环境配置完成,正所谓万事俱备,只欠你自己的努力了。请从书的前言开始,仔细地阅读手头的教材,很多人看书喜欢直接从第一章开始看,这是错误的做法。前言是作者对整本书的大体介绍,作者一般会告诉你需要什么基础才能够顺利阅读本书,这可以帮助你检验自己的基础知识是否已经具备。看完前言,还要浏览一下目录,了解一下书的整体结构,顺便给自己安排一下学习计划。
学习C语言,必需注意每一个细节,书上的例子代码一定要自己亲自敲一遍,编译执行输出都跟书上说的一致才能算是学完了一个例子,如果不一致,就要仔细找原因。出了书本上有的例子,自己还要“创造”一些例子,比如学习运算符优先级的时候,可以写几个相同的表达式,在不同的位置加上括号,看看有哪些不同的行为,比如*p++和(*p)++,又比如a = b == c、(a = b) == c和a = (b == c)等等。自己抄的书上的例子以及改造之后的例子,还有自己“创造”的例子,都应该仔细地归类保存,并且要在源代码中写上简短的注释,阐述这个例子的意图。
例子之后就是习题了,我建议初学者把所有的习题都独立做一遍,然后对照答案的代码,看看自己的代码有那些不足,再试着修改自己的代码。很多人不重视习题,这是极大的错误,因为作者通常会在习题中说明一些重要的道理,而不是单纯地检验前面的知识。
也许你认为这样学习太慢,其实不然。学得细致就不用走回头路,等你学到后面才发现自己前面没搞清楚,那才是真的得不偿失。一般说来,整本书读完,你应该完成数千行乃至上万行的代码,无论是原封不动照抄书上的,还是自己心血来潮写就的,都是今后继续学习的一笔财富。以我自己举例,阅读《Windows核心编程》时(我只阅读了3/4的内容),除了抄书上的代码,还自己写了很多例子,一共有5574行(用unix下的wc工具统计),时隔多日,我早已记不清Windows的系统编程了,但只要花几分钟翻出以前的代码看看,便会重新了然于胸。所谓好记性不如烂笔头,就是这个道理。
仔细读书、认真抄写源代码、独立完成习题外加更进一步的实验,最后将所有的代码留下,成为自己的经验和财富,绝对的辛苦,也绝对的事半功倍。当然,这种方式只适合学习需要精通的技术,如果不是学习C语言,你还要具体情况具体分析。
写到最后,还有非常非常重要的一点没有提及──代码风格,从最开始学习就必须强迫自己模仿最优秀的代码风格。因为代码风格太重要内容也太多,我会用专门的一篇文章来详细讨论,请大家关注《程序员之路──关于代码风格》。
题目是关于C语言,其实我主要想说说程序该怎么学,或者一点感悟罢了,在这里,我只想引用身边的几个人的例子,来谈一下对程序学习的理解
第一个人要说到我了,我对程序产生兴趣,是听说程序可以作游戏,那时候是在初一,然而借来一本G-BASIC简明教材后,我便傻了眼。
陌生的词汇,古怪的逻辑,都是些天文的中文译本,头疼了好一阵子。
然而当时又没有别的闲书可看,我就整天捧着那一本书,什么方法都试过了,甚至倒着看过了,都没看出什么眉目,自己又没有电脑,只能不停地大胆地想象,然后满脑子的疑惑……
在这里停一下,上面说的便是我学习的风格:总要经历一番波折,瞎折腾几下,然后才会有偶然间的明悟-开窍了!我甚至没见过几个人有我这么笨,现在明白过来了,我总是一开始把事情想得过于复杂,造成狗咬刺猬的难堪的局面,然而竟然有意想不到的收获!但是不建议大家模仿这种风格,起码追女朋友的时候不能这样,生活中很多机会在于接手的那一瞬间,失去就永远找不回来了。
现在回来,后来偶然间,我看懂了一行代码,是print 语句,当时兴奋得要命,又仔细看了这个看了那个,一下子看懂了很多东西,像是在霎那间被什么给击中似的,立刻间醍醐灌顶。。。。
初三在学校学了FOXBASE,基本上自学的,我发现了一件奇怪的事,我这人是出了名的记性不好,然而当时背程序中的命令却是过目不忘,到现在还记得很多,也许是感兴趣吧,也感谢我的微机老师给我提供自由上机的机会!后来我又自学了QBASIC,初四暑假又学了一点C,那时学C遇到不少困难,当时我们学校机房连C语言都没有,我只好闷在家里,一本二级C教材,一本配套习题,整天发呆地想,把自己的脑袋当电脑cpu使,有时进入死循环,有时又彻底崩溃。我花十几天看完了一本书,做完了一本题,然而脑袋里充满了疑惑,由于没有上机实践的机会,我就凭自己的猜测与推理己慢慢建立了一大堆理论,十分得意与自信,但后来证明大部分是错的,害我花了很长时间去纠正,这是后话。可是,还是那句话不破不立,不阻不行。就像我现在有了电脑,整天泡在互联网的海洋里,感受着快餐文化,好久都没静下心来好好想点东西了.
高中还上过几节电脑课,只不过忙于应付高考,我将学程序的打算放弃了,到这里我该说下一个人了。
高中时坐我旁边一女生,她的文曲星里有BASIC,我偶尔拿过来编了几个小程序玩,她看到后很感兴趣,令人惊讶的是,她只看了三五个程序,听我讲了几个命令的功能,就能根据自己的想象编出小动画来,她此前是绝没有学过程序的!我曾一度怀疑过她的智商,然而她程序是如此之快,却让我的眼都瞪大了好几圈,比我当年高了好几个境界!我后来经常在想,是不是我当时的方法不对,程序到底应该怎样学。。。
一晃就到了大学,我碰到另一个让我佩服的人,跟我一样是学计算机的,他是偶尔看到我在编动画,然后十分感兴趣,便开始自学。他令人吃惊的是,指针,结构体,位运算等等,都没搞懂(更不用说算法和数据结构),只学了三种程序结构,现在只学了C半年,便自己能编出贪吃蛇,俄罗斯方块,扫雷,还有很多叫不出名字的小游戏来,现在又在写黑白棋,我知道我确实是走了不少弯路。
程序应该怎样学,对C来讲,我觉得应该从画图学起。
原因有二。
一,画图程序很能振奋人心的,它能带给你浓厚的兴趣,这是学程序的关键。
二,画图程序容易上手,很简单的道理,就能做出很漂亮的东西来。有很多东西甚至不用看课本,就能自己推出来(我认为推理的方法很重要,它是你自学的必要条件)。
比如画一个圆,从数学角度来分析,要确定一个圆,只需知道它的圆心(x,y)与半径r,那好一个圆就画出来了,circle(x,y,r);
其它的类推,再画一个立体的,选择立方体,再分析,只要知道两个对角的坐标就行了吧,翻一下课本,不是这样,为什么?你或许会想到,电脑屏幕本来就是平面的,用立体坐标的理论在这里,恐怕就不是最简单的方法。所以它采用的应该是两个平面图形平移。此处留下疑问,立体图形在平面坐标中怎么表示?自己慢慢研究,很浅的东西。
想作动画吧,想象一下动画的原理只是从一个图形变幻到另一个图形,不同地变幻就出现动画效果,那就可以画一个,擦了,再画一个新的,再变化。。。
数学功底好的话,从二维到三维,从静态到动态我认为是很快的过渡。
具体该怎么学呢,你可以多找几个画图的例子,敲到电脑里,多敲几个,慢慢地你就会知道哪些东西是干什么的,慢慢地就会自己做出东西来。
但这里不要沉溺太久了,先学画图只是帮助你轻松地入门(很多人C学完了还没有入门)。
从画图里暂时走出来,你应该打打基础了,这里不再赘述。可以边学边实践,物理,数学课本中很多问题都可以用程序来演示,来解决,尝试着多做些东西,这比你老学课本中的模型强多了,只有你自己去体会才能知道。
谈及C语言,我想凡是学过它的朋友都有这样一种感觉,那就是“让我欢喜让我忧。”欢喜的是,C语言功能非常强大、应用广泛,一旦掌握了后,你就可以理直气壮地对他人说“我是电脑高手!”,而且以后若是再自学其他语言就显得轻而易举了。忧虑的是,C语言犹如“少林武功”一般博大精深,太难学了。其实就笔者认为C语言并非是“difficult(困难)”的,只要你能理清思路,掌握它的精髓,那么自学C语言是一件非常容易且又其乐无穷的事。今天本人就与大家一起谈谈如何学习C语言或者说学习C语言应从哪几方面着手。
了解一些基本知识
一.C语言的背景
就个人感触,无论学习哪门语言首先应该了解一下自己所学语言的背景,也可以说它的发展史。
C语言属于高级程序语言的一种,它的前身是“ALGOL”。其创始人是布朗·W·卡尼汉和丹尼斯·M·利奇。C语言问世时是带有很大的局限性,因为它只能用于UNIX系统上。然而随着科学技术的进步,计算机工业的发展,C语言逐渐脱离UNIX。1987年美国标准化协会制定了C语言的国际标准,简称“ANSI C”,从此以后它便成为一种广泛使用的程序语言。C语言的优点很多,主要的有如下四点:
1.兼备高级语言与低级语言的优点,属于一种中间语言。
2.它是一种结构化程序设计语言,非常适合结构化程序设计。
3.有较丰富的数据类型、运算符以及函数供以选用。
4.直接与内存打交道,使修改、编辑其他程序与文档变得轻松,简单。
二.二大语系二种不同的学习方法
笔者学习过很多程序语言,例如:C,C++(C语言的扩展),QBASIC,VB(BASIC的可视化),JAVA,J ,VB,JAVA,ASP,FOXPRO,PERL等等,就本人实践所得,其实高级程序语言分为两大语系。一路是以C为主的程序语言,例如:JAVA,JAVA等,这类语言在函数的调用,程序语句的书写,循环的控制都极为相似。另一路是以BASIC为首的程序语言,例如:FOXPRO,VB等,此类语言同样具有相似的函数调用,程序语句书写以及循环控制,但与C语系是不同的。因此若是您以前是从QBASIC起家的,那么在学习C语言前最好是先洗洗脑,千万不要把学习BASIC的方法以及思路用在C身上。
讲到这里,我想大家对C语言一定有了感性认识吧!下面让我们再升华一下,全方位亲密接触它。学习C语言必须从以下四点入手,也就是说,只要你能掌握这四点的内容,那么基本上就大功告成了。
怎样才能学好c语言
有人问我c语言是不是很难学,我说不是,后来问的人多了,我就萌生了写一篇关于c语言如何入门的文章的念头来。
其实c语言很简单,它只是一种交流的规则,一种表达的工具,一种承载思想的容器而已,之所以感觉难,我觉得是还不习惯使用计算机特点来考虑问题。这就好比中国人从到英国定居一样,虽然你学过英语,但是那只是想象中的英国,和现实的英国的情况还相差很远,所以要有一个适应的过程,也就是常说的过渡期或磨合期。
想尽快上手就得掌握计算机的特点,计算机的特点包括:
1、 计算机在问题的处理方式上要求全,将所有的可能都要告诉它。人可以根据习惯忽略一些东西,但计算机不行。比如说求解一元二次方程,我们考虑问题就已经默认了a不等于0,更有甚者把b方减4ac也默认大于等于零了。这是我们的习惯,既然有解,我们一般习惯上就把它定为实数解,所以你做出来的程序一般是不考虑这两个条件的,但是计算机不行,计算机是有名的弱智。计算机没有象人一样的智能处理能力,它是人忠实的信徒,不管你怎么想,它都会执行你的命令。由于你的习惯,导致一些别有用心的人或者无意犯错的人来犯错误,致使计算机有时无所适从。很疲惫,甚至崩溃,报错,造成你的程序是不成功的,所以你感觉很难。
2、 计算机要求程序的描述精确,无二义性。人的语言有很强的随机性和二义性。我们平时说话时,有时是一些招呼,有时说话的逻辑性可以不太清楚,话既可以表达这样的意思,也可以表达那样的意思,人可以根据环境和对方想表达的含义进行分析,最终得到正确的结果,但是计算机很弱智,虽然它很听话,但是他不能理解你表达的思想,只会按你交给的指令执行,这样导致执行时报警和出错。
3、 计算机编程是要求有很强的全局性和逻辑性,不存在起伏的问题。人的思维有很强的活跃期和蛰伏期,计算机不会,它随时待命。人在考虑问题时,有很多尽兴的东西,但这不是处理问题的整体,而是一部分,所以就出现做完一段代码后,就不愿意再写,或感觉很吃力,所以感觉很难。
计算机要求它的主人,考虑问题要全面,所有可能的情况及处理都要告诉它,要求学会沉稳,心态要稳定,要求交流的语句一定要明了含义单一。
怎样才能很快的学会c语言,更快的度过磨合期呢?C语言的语法规则记忆理解当然是不可少的,除此之外还应注意以下几个方面:
1、 好好理解一下变量和函数的概念,至少要重新回头看看初等数学。这是基础,否则就会先天不足,你学的再好,也成不了大气候。
2、 平衡心态,虽然不能做到“不以物喜,不以己悲”的水平,但至少不要浮躁,不要急于求成,欲速则不达。
3、 培养自身的全局意识,既能小无内,也能大无外,才行。
4、 严格按照程序设计过程设计程序,不要跳脱,天马行空,没有规矩是不成方圆的。
5、 努力提高自身的综合素质。程序是人思维的表达形式,是人处理问题思路和语言的结合体。你对客观看成到什么程度和你掌握的知识成正比。如果你对处理的问题不理解,不会处理,你怎么也写不出程序。
6、 学会交流,多交流,相互补益,同时团队合作也是很重要的。
总之,实践出真知,多学、多练、多思、多交流,勤奋好学才能学成。
㈤ C语言算法怎么学习
意思就是用C语言写算法,推荐《算法导论》这本书
C语言主要是些驱动和嵌入式的,这些东西对算法要求很高。
学习算法主要要思考,分析。一步一图一代码的去理解算法,最后要动手实现算法,达到真正理解的目的。
㈥ C语言要怎样自学有什么窍门可以速成
我觉得哈,基础的理论可以先放放,C语言编程主要是思想,你要学的主要核心就是语句---if,for,while之类的,把这几个基础的语句学好了,就想着把一些语句嵌套使用,再学函数,数组,会了之后就联系语句,什么调用子函数的,数组指针之类的就应该没啥问题了,总之自己多想些程序来联系,不会时再翻翻书,查查资料,总之我是学的很轻松的。一般的程序,脑海中一想就知道大概方向,然后不断的调试,更改……一般编程都是这样的,祝你学习愉快
㈦ 想深入学习C语言,却不知怎样学起,请帮忙推荐相关书籍或方法
初学C语言程序设计的基本方法和技巧
C语言是一门应用最广泛的基础高级编程语言,有很多语言都是由它发展而来的,所以学习好C语言之后再学习任何一种编程语言都会轻松上手。
1 熟记基本知识点
学习C语言和学习任何一种语言的方法基本一样。我们婴儿期间咿呀学语时,从一个字开始学,然后两个,接着更多,最后我们能成句,成段,到出口成章。学习C语言的时候也一样,有些最基本的内容必须要记下来。
1.1 关键字
关键字是由C语言规定的具有特定意义的字符串。它们是写C语言的基础,如果关键字不记下来,那编程是寸步难行。
1.2 运算符
C语言中的运算符和表达式与我们数学上的运算符和表达式有相同的,也有不同的。我们在学习的时候就注意记住并弄清楚那些不同的地方。基本的语法表达式及执行过程。选择结构中的if语句和switch语句。循环语句中的for语句、while语句和do-while语句。这部分就好比是你会了许多词,然后得把这些词组成一些句子,语法的作用就是告诉你怎样说好一句话,表达清楚的意思。
1.3 常用库函数
在这里最重要有两个函数:输入函数scanf()和输出函数printf()。一个程序如果没有输入,那无论运行多少次结果都一样,那也就失去了写程序的目的了。同样一个程序如果没有输出,那运行程序有什么意义呢?当然输出的形式比较多。在初学C语言的时候主要是从屏幕上输出结果。所以这两个函数的使用方法也必须要掌握。这两个函数已经定义在stdio.h这个头文件中,不用我们自己写,它们不是C语言中的语句,所以在使用这两个函数时在源程序顶部一定要加上#include 。这是为了让我们在执行程序的时候,让计算机知道scanf()和printf()这两个函数怎么用。
掌握上面的必须要记下来的内容,相当于我们开始学说话时先听别人说,我们自己跟着学一些最基本的日常语言。这时我们就可以从一些简单的程序开始读,能把每一个程序的运行结果能自己读程序准确地执行出来,那样我们就可以开始来编写程序了。
2 掌握程序的基本结构
编写程序一定要注意程序的结构性。学习写程序,不能开始就写代码。许多人在动手写程序的时候感到无从下笔。原因主要是:看到一个题目不知道如何去分析,它怎么才能变成一个程序呢?这是初学者在编写程序的主要问题。我在教学中采用了一种分步式的方法。
2.1 看到一个题目的时候先别想着编程序,用一个具体的实例想想不用程序你是如何解决这个问题的
例如输入三个数,输出最小值。我们用3,8,6三个数来考虑,我们一看就知道3是最小的。可是我们这一看中其实并不简单,其中有判断。我们先看第一个数3,然后已经记在我们头脑中了,再看第二个数8,3比8小,那我们还是记住3,再比较第3个数6,最后确定3是最小的。我们现在就是要把我们头脑中很快闪过的这些判断过程想清楚。
2.2 我们要弄清楚一个程序由哪些部分组成
这就好比我们写一篇文章也有一些结构。一个C程序也有其一般结构,我把它归纳成下面格式。
#include
main()
{
定义变量;int,float,char,double
输入数据;键盘输入scanf();
直接赋值;例如x=3;
处理数据;if-else;switch;for;while;do-while;
输入数据;printf();
}
第一行代码表示把标准的输入输出头文件包含在这个程序中。第二行代码是C程序的主函数,每个C程序中必须有且仅有一个main()函数。然后是函数的一对“{}”。
定义变量的意思好比买一块地,有了这块地就可以在上面盖房、种庄稼之类的。但是为了便于统一管理,比如城市已经规划好了,你在郊区买的地就只能种庄稼,在市中心买的,就只能盖房,这就是变量类型的含义了。用上面求最小值的例子。我们在三个数中求最小值。这三个是什么数,是整数还是小数?这就必须用变量类型来说明。对于上例应该定义三个整型变量用来存放三个整数,还要定义一个整型变量用来存放最小值。如:int a,b,c,min;这行代码的作用其实是要了一块内存,然后在这块内存里存东西。因为我需要一个整数,所以就用int这个关键字来声明(相当于用这块地干什么)。那么变量a,b,c是什么呢?你买了一块地,总要知道这块地在哪是吧?不然就白买了,变量就是这样一个作用。我们需要把数据存在计算机中,什么样的数就定义什么样的类型,需要存几个数就定义几个变量。
输入数据有两种方法。第一种从键盘输入,就需要用到scanf()这个函数;第二种是直接赋值。
处理数据是对于初学者来说最难的一部分,也就是把我们刚才分析过程转换成语句。这需要学好C语言的三种程序结构。
(1)顺序结构
顺序结构的程序设计是最简单的,只要按照解决问题的顺序写出相应的语句就行,它的执行顺序是自上而下,依次执行。顺序结构可以独立使用构成一个简单的完整程序,不过大多数情况下顺序结构都是作为程序的一部分,与其它结构一起构成一个复杂的程序,例如分支结构中的复合语句、循环结构中的循环体等。
(2)选择结构
对于要先做判断再选择的问题就要使用分支结构。选择结构的执行是依据一定的条件选择执行路径,而不是严格按照语句出现的物理顺序。选择结构的程序设计方法的关键在于构造合适的分支条件和分析程序流程,根据条件的结果选择对应的分支语句。选择结构适合于带有逻辑或关系比较等条件判断的计算,设计这类程序时往往都要先绘制其程序流程图,然后根据程序流程写出源程序,这样做把程序设计分析与语言分开,使得问题简单化,易于理解。程序流程图是根据解题分析所绘制的程序执行流程图。
例如上例中,把我们头脑中很快闪过的这些判断过程画成流程图即图1:
由上面的流程图再写出对应的语句就比较容易了。如下所示:
min=a;
if(min>b) min=b;
if(min>c) min=c;
学习分支结构不要被分支嵌套所迷惑,只要正确绘制出流程图,弄清各分支所要执行的部分,嵌套结构也就不难了。嵌套只不过是分支中又包括分支语句而已,不是新知识,只要对双分支的理解清楚,分支嵌套是不难的。下面我介绍几种基本的分支结构。
①if(条件)
{ 分支体
}
这种分支结构中的分支体可以是一条语句,此时“{ }”可以省略,也可以是多条语句即复合语句。它有两条分支路径可选,一是当条件为真,执行分支体,否则跳过分支体,这时分支体就不会执行。如:要计算x的绝对值,根据绝对值定义,我们知道,当x>=0时,其绝对值不变,而x<0时其绝对值是为x的反号,因此程序段为:if(x<0) x=-x;
②if(条件)
{分支1}
else
{分支2}
这是典型的分支结构,如果条件成立,执行分支1,否则执行分支2,分支1和分支2都可以是1条或若干条语句构成。如:求某年的年号是否是闰年。
分析:因为当某年号能被4整除但不能被4整除但不能被100整除,则这一年是闰年;或者这一年号能被400整除也是闰年。即year%4==0&&year%100!=0||year%400==0
其程序段如下:
if(year%4==0&&year%100!=0||year%400==0)
printf(“%d is leap year!”,year);
else
printf(“%d is not leap year!”,year);
}
③嵌套分支语句:其语句格式为:
if(条件1) {分支1};
else if(条件2) {分支2}
else if(条件3) {分支3}
……
else if(条件n) {分支n}
else {分支n+1}
嵌套分支语句虽可解决多个入口和出口的问题,但超过3重嵌套后,语句结构变得非常复杂,对于程序的阅读和理解都极为不便,建议嵌套在3重以内,超过3重可以用switch语句。
④switch开关语句:该语句也是多分支选择语句,到底执行哪一块,取决于开关设置,也就是表达式的值与常量表达式相匹配的那一路,它不同if…else 语句,它的所有分支都是并列的,程序执行时,由第一分支开始查找,如果相匹配,执行其后的块,接着执行第2分支,第3分支……的块,直到遇到break语句;如果不匹配,查找下一个分支是否匹配。这个语句在应用时要特别注意开关条件的合理设置以及break语句的合理应用。
(3)循环结构
循环结构可以减少源程序重复书写的工作量,用来描述重复执行某段算法的问题,这是程序设计中最能发挥计算机特长的程序结构,C语言中提供三种循环,即while循环、do while循环和for循环。三种循环可以用来处理同一问题,一般情况下它们可以互相代替换,另外还有一种goto循环语句,因为强制改变程序的顺序经常会给程序的运行带来不可预料的错误,所以不提倡使用。
常用的三种循环结构学习的重点在于弄清它们相同与不同之处,以便在不同场合下使用,这就要清楚三种循环的格式和执行顺序,将每种循环的流程图理解透彻后就会明白如何替换使用,就能更好地理解它们的作用。在分析循环结构的语句时要开清楚,什么时候开始循环(即循环的初始值);什么时候结束循环(即循环的终止条件);循环的时候都做哪些操作(即循环体的执行部分);特别要注意在循环体内应包含趋于结束的语句(即循环变量值的改变),否则就可能成了一个死循环,这是初学者的一个常见错误。
在学完这三个循环后,应明确它们的异同点:用while和do…while循环时,循环变量的初始化的操作应在循环体之前,而for循环一般在语句1中进行的;while 循环和for循环都是先判断表达式,后执行循环体,而do…while循环是先执行循环体后判断表达式,也就是说do…while的循环体最少被执行一次,而while 循环和for就可能一次都不执行。
顺序结构、分支结构和循环结构并不彼此孤立的,在循环中可以有分支、顺序结构,分支中也可以有循环、顺序结构,其实不管哪种结构,我们均可广义的把它们看成一个语句。在实际编程过程中常将这三种结构相互结合以实现各种算法,设计出相应程序,但是要编程的问题较大,编写出的程序就往往很长、结构重复多,造成可读性差,难以理解,解决这个问题的方法是将C程序设计成模块化结构。输出数据是每一个程序必须包含的部分。在C程序中的输出通常是从显示屏上输出最后的结果,使用printf()这个函数。
3 掌握一些简单常用的算法
编程其实一大部分工作就是分析问题,找到解决问题的方法,再以相应的编程语言写出代码。这就好比我们学习写作文段落的时候都有一些经典的好词好句,可以使文章添彩。同样程序虽然可以实现各种功能,但最基本的一些算法并不是特别多,我们掌握一些简单的算法,在掌握这些基本算法后,根据不同的问题,再灵活应用。如百钱买百鸡的问题,就是用100元钱买100只鸡,公鸡5元一只,母鸡3元一只,小鸡1元三只。这种问题用数学方法可以列出方程:
x+y+z=100
5*x+3*y+z/3=100
按数学方法三个未知数两个方程无解,实际上是可以解的,如果把公鸡,母鸡和小鸡可能的只数全部代入到方程中检验就可以得到最后结果。这种方法叫穷举法。如果我们用手算那可能要花上半天的功夫,但让计算机来算就只需要1秒种。使用算法后分析和处理问题都会简单很多。当我们能熟练地掌握了简单算法后就能实现一些比较复杂的编程问题了。
任何程序只要有思维,有想法,那么实现程序时就不会觉得无从下手。而要学习这种思维方法就是多做题,多读程序,学习别人好的思维方法,多想想一个程序还可不可以有另外一种方法来实现它。这样久而久之,自然会形成一种自己的思维方法。因此我认为不管学什么语言都是这样。
4 培养良好的编程习惯
培养良好的编程习惯要从第一行代码开始,这也是学好C语言的重要因素。例如编写程序时用缩进的方式、写注释、程序写到一定的阶段时要做一下测试等。这些工作可以帮我们在调试程序时有很大的帮助。程序代码实现后,错误是难免的,所以也要锻炼自己的调试查错能力,而良好的编程习惯可以使我们在调试时减小工作量和提高调试效率,也有助于形成自己的编程风格。
C语言教学探讨
注重编程细节,培养编程技巧
C语言的规则颇多,编写C程序得严格按照其规则进行程序设计,对初学者而言,常常马虎大意,所编写的程序不能正常编译和执行结果,从而打消学生的学习积极性。因此在教学初期,教师必须强调C的许多细节问题,让学生的这种不良习惯扼杀于“萌芽”状态。如学生常常在写程序时出现以下问题:
3.1 字母大小写问题
C语言程序严格区分字母的大、小写,此规则一定给学生讲清楚,让其记住那些特例。如用科学计数法表示浮点数中的“E”,弄清该计数法的规则,其中的字母“E”可以不区分大、小写;再如表示16进制数的符号“0x”,其中字母“x”也可不区分大、小写等等,在教学过程中,对该类问题进行总结、归纳让学生一次就掌握并记住。
3.2 标点符号问题
学生在录入程序时,往往忽略标点符号。问题主要表现在:
(1)忘记录入标点,C语言中,一条语句的结束需要用符号“;”与另一语句隔开,对初学的学生,他们通常会忽略掉这个细节问题,这需要教师在讲授中明确地指出,让学生弄清楚。另外,强调不同标点符号的作用和区别,如“;”和“,”等等。
(2)标点录入错误,在录入程序时,很多学生录入的标点是不正确的。如分号“;”和“;”是有区别的,前者为中文下的标点符号,而后者才是程序中需要的。必须给学生强调程序中所需要的标点符号都应该是英文状态下的。
3.3 容易混淆的符号
字母符号“o”,“O”与数字符号“0”;字母符号“l”与数字符号“1”;字母符号“z”与数字符号“2”的区别等等。
对于少数学生,教师虽然强调了很多的细节,但还是不能接受,这便通过程序的调试来让他们明白问题的严重性,通过他们自己对程序的调试来纠正问题的所在,这需要教师耐心地为学生指导。如程序xx.c:
#include <stdio.h>
void main()
{
int a=10
printf("a=%d\n",a);
}
编译时出现以下问题:xx.c(5) : error C2146: syntax error : missing ';' before identifier 'printf',给学生讲解提示,让学生通过提示明白问题所在,即该程序第5行的printf语句前缺少“;”,这是学生自己通过实践证明了问题的所在,使之深受体会。通过程序调试的方法不仅可以为学生解决错误,同时也增强了学生调试程序的能力,从而提高编程的经验和技巧。
4 明确教学目标,任务驱动学习
教师深入分析教学大纲, 在全面了解学生的数学基础知识状况的前提下, 根据大纲制定好教学计划,做好每次教学任务计划,明确教学目标,选择适当的练习作业,督促学生不断深入学习。
在制定计划的过程中要针对学生的数学知识基础, 将教材中涉及到的学生未掌握的数学知识类例题进行更换, 避免因数学的方面的问题形成教学障碍, 在课时允许的条件下也可在教学前为学生补充一定的数学方面相关知识。
设计“循环”语句教案时,可以先给学生讲清楚学习循环语句的用处及优点,介绍学习重点、难点,要求掌握一些程序设计的算法,让他们明确该语句的重要性。如实现求等差数列s=1+2+3+…+n的和时,主要介绍使用循环语句求解,并要求学生掌握其求解方法,并按照此方法推广,以掌握算法思想,然后再通过作业的任务编写垒加算法的相关程序,如求s=1!+2!+3!+…+n!等,学生通过自己的练习不断总结编写循环程序的经验,体会循环的思想,使得他们对循环语句有更深的理解和认识,从而达到较好的教学效果。
5 改进教学方法,实现教学相长
传统教学模式的教学方式是:用大量的时间讲定义、语法、概念、语句,对学生的要求是注重接受、理解、记忆,讲课方式是老师讲、学生听。学生掌握的知识比较抽象、机械、静止、片面和孤立,他们不知道如何灵活地综合运用这些知识去解决实际问题。基础知识固然重要,但利用基础知识解决实际问题能力的培养是高等教育更为重要的目的。如何使当前的大学生具备扎实基础知识的同时,又具备解决实际问题、批判性思维和创造性思维,发展合作能力与自主学习能力,是目前急待解决的问题,也是人们进行教学改革的思路。
注重问题求解方法,掌握算法思想。如实现求等差数列s=1+2+3+…+n的和时,该数列的求解方法有多种。除了使用循环语句求解外,还可以通过公式s=(1+n)*n/2进行求,也可以使用函数的递归调用进行求解。通过多种方法的介绍,不仅可以巩固学生的基础知识,又能培养学生的创造性思维。
在教学中一定要做到培养学生学习兴趣,让学生体验成功乐趣,改变学习方式,促进教学互动。
6 知识转变能力培养,注重实践课教学
计算机科学是一门经验学科与理论学科相结合的课程,在学习时,不仅要掌握理论知识,而且实践操作的经验的积累也非常重要。C语言变成实践经验的积累是不断从编写程序、调试程序和运行程序结果的过程中总结得出,由此,教师在讲授C语言课程时,不能忽视实践课的教学,尤其是学生上机辅导课的教学。
往往,很多教师认为,上机辅导课就是让学生自由练习,及时为有疑问的学生解决问题。实际上这种教学辅导方式是不合理的,应该在以下方面进行改进:
1)学生上机应有明确的练习目标,提高编程效率
在每学期的教学调查中,同学们总会提到这样的问题:上机课不知道该干什么;写程序无从下手;编程很难等。这就要求我们教师在上机课程中要有目的有意识的给同学安排上机的任务。应该从以下几点来进行上机课程:
(1)结合上课的理论知识,确定上机课要完成的目标。
(2)引入相关的程序实例,逐步分析解决该程序的思路和相关的程序代码。让学生了解如何下手去编写程序。
(3)根据引入的程序实例再扩展开,让同学们自己动手完成相关的程序代码。
(4)评讲相关的程序代码,并引出新的程序,让学生自己独立的完成。
(5)课程随时的课堂答疑。
2)激发学生的学习兴趣
学生学习的最关键的因素是兴趣,一定要注意提高学生学习的兴趣,如何提高是一个很关键的问题。首先要充分的肯定学生,即便是一点点值得肯定的地方也要肯定。其次多评价学生做的作业,让学生有一定的满足感。最后多让枯燥的程序与实际的生活联系起来。这样就可以大大的提高学生的学习兴趣。
7 小结
以上就是在学习和教授过程中,对C语言程序设计教学课程的心得体会,希望对广大的同仁能有一定的参考价值
C语言快速学习技巧(原创)默认分类 2010-03-14 12:09:53 阅读46 评论0 字号:大中小
从最基本的流程学起,从最基本的语句学起。在学习的过程中,特别注意每个函数的作用,多想想这个函数能怎样用,用在哪里,能起到什么另外的效果!要学会活用!程序,对数学,特别是逻辑的要求把比较高。写好程序,首先对整个程序的流程有缜密的思考,要求周到,准确,先思考,不要急着写程序!!这一点请注意!也就是说先算法,先研究程序的结构,是用什么来实现的,循环?分支?等等。然后再用语言来实现!语言只是编写程序的工具。所以学语言,先学会程序化的思想。在将算法翻译成语言的时候,再结合实际情况,逐步求精,有目的的修改,达到最优化。我们学院的C语言,很有特色,英文版,考试也是。我想说的就是,外文版的这本书,它在引领一个不懂编程的人,逐步养成程序、流程、逻辑的思想,是非常优秀的一本书。如果能字字句句阅读,将会很清楚领会到程序的思想。然而,书太厚,生词太多,时间太短。我的建议是,看某一本中文版的书,一本不够,看两本。先尽快学会程序的思想,也就是用程序来想问题,这样,就会编程了。然后,考试前几周,背一背生词、关键词,就可以考试了。如果你坚持要读外文版,可以,但要跳读!然后,还要看你是想只是应付期末考试,还是想学好编程。应付期末考,需要注意书中的重点,也就是考点,这样就够了。比如说字符型变量加指针,这样就够了,不需要更高级的指针的知识。而你如果想真正学好程序(我不说C语言是因为我说过C语言只是编写程序的工具之一),肯定是要打好基础的!任何一个细节,都是不能放过的!而且,这样的人往往会很郁闷~因为我们程序真正要求的,考试一般不会涉及到,因为比较难!(不会指针的人,永远不要说他会C语言!)而考试的内容,恰恰是最无聊的东西,比如格式化输出printf函数的第一个参数,太繁了,记都记不住。如果学的深的话,只需要知道有这么一个函数,有这么一个功能。而要用的时候,查书就行。可是对考试来说,显然不行。所以要看看你是哪一种~掌握一些简单的算法 编程其实一大部分工作就是分析问题,找到解决问题的方法,再以相应的编程语言写出代码。这就要求掌握算法,根据我们的《C程序设计》教学大纲中,只要求我们掌握一些简单的算法,在掌握这些基本算法后,要完成对问题的分析就容易了。如两个数的交换、三个数的比较、选择法排序和冒泡法排序,这就要求我们要清楚这些算法的内在含义,其中选择法排序和冒泡法排序稍难,但只要明白排序的具体过程,对代码的理解就不难了。如用选择法对10个不同整数排序(从小到大),选择法排序思路:设有10个元素a[1]~a[10],将a[1]与a[2]~a[10]比较,若a[1]比a[2]~a[10]都小,则不进行交换,即无任何操作;若a[2]~a[10] 中有一个比a[1]小,则将其中最大的一个(假设为a[i])与a[1]交换,此时a[1]中存放了10个中最小的数。第二轮将a[2]与a[3]~a[10]比较,将剩下9个数中的最小者a[i]与a[2]交换,此时a[2] 中存放的10个数中第2小的数;依此类推,共进行9轮比较,a[1]到a[10]就已按从小到大的顺序存放。即每一轮都找出剩下数中的最小一个,代码如下: for(i=1;i<=9;i++) for(j=i+1;j<=10;j++) if(a[i]>a[j] {temp=a[i]; a[i]=a[j]; a[j]=temp; } 结语:当我们把握好上述几方面后,只要同学们能克服畏难、厌学、上课能专心听讲,做好练习与上机调试,其实C语言并不难学.
㈧ C语言编程题没有思路怎么办
C语言编程题没有思路:先对问题进行分析,心里大体有个算法来解决,然后再开始一步步编写程序,如果想不好,可以先画画结构图,当然这是对编程题。对填空题就得先了解程序的用途,然后看代码中缺少的内容了。
程序就是读取文件到数组,再将数组进行排序,最后写入文件。读写文件流程:fopen获取文件流(根据读写需求,选择参数,使用完必须调用fclose函数关闭),fscanf读取文件内容,fseek控制文件流指针,fprintf写入文件。选择排序:每个循环周期选出一个最值,交换一次。
主要特点
C语言是一种结构化语言,它有着清晰的层次,可按照模块的方式对程序进行编写,十分有利于程序的调试,且c语言的处理和表现能力都非常的强大,依靠非常全面的运算符和多样的数据类型,可以轻易完成各种数据结构的构建,通过指针类型更可对内存直接寻址以及对硬件进行直接操作,因此既能够用于开发系统程序,也可用于开发应用软件。
㈨ 请问C语言的高手们:你们认为学习C语言的方法或者是诀窍是什么呢
没有诀窍,背函数只要你能把c的函数理解背会了,那几差不多了,然后就是多写程序,看程序,从每一个代码看起,弄清楚他的含义,在电脑上写累了,就拿笔在纸上写!找一些c的编程资料看别人是什么思路!自己又是什么思路!