怎么学好C语言,怎样才能学好C语言

1,怎样才能学好C语言我也一年多前才开始学的现在已经能拿些奖了我就把我的学习过程大概给你说一下: 首先是买了一本关于学习c语言的数(我买的是<<c语言程序设计>>第三版,谭浩强出的----个人认为还可以); 然后自己看一章节,遇到不懂的反复的阅读下面的讲解,遇到新的函数名和关键字,书写格式的说明都记下来;多多读程序是很重要的,经典的程序也可以背几篇,有时你会发现特别有用,节约很多时间; 再之后找时间上机编程实验 (个人认为这个最重要,因为有时不上机觉得好像都懂了,上机才发现问题照--葫芦画瓢的事情有时都出错), 这是帮自己啊查缺补漏的最好时机!还有很多编译系统的操作知识是书本上所没有的,就比如调试程序的经验--是要经历一次一次的试验和失败积累起来的,然后你才能有有更强的判断程序出错的能力,才能避免自己下次重犯这样的错误 最后就是遇到什么不懂得的也可以自己,做实验,实在搞不懂的还可以上网求助,最好是几个人交流; 我认为适合每个人的学习方法都是不一样的,但就学习c语言来讲,我觉得有些是必须注意的: (1)多读程序,增强自己对语言理解,增加积累,有时你会发现原来自己掌握的还不全,或是这语句还能这样用,给你以一种豁然开朗的感觉; (2)多上机实践,有很多关于编译环境的操作知识和经验是要靠自己总结和不断积累的,除了你自己谁也帮不了你;这样做的好处还有查漏补缺, 有时你自己觉得没有问题的地方上机才知道还漏洞百出,有时照葫芦画瓢都会不小心出错,只有这样你才会知道下次应当注意什么,你才会在下次重犯同种类型的错误时快速的检查出来并修正,才能逐渐成为一个合格的甚至优秀的程序员!!! //加我q吧,不懂得的我可能可以帮你看看: QQ:826563317一般有一个经典的说法:学c语言需要三步走,第一步是入门,这个时候应该有一本深入浅出的入门教材,比如说《c primer plus》或者谭浩强的《c程序设计》同时对数据结构、算法也必须深入地学习和练习,第二步自然是要拜读《the c programming language》这本c语言的bible,同时参考《c: a reference manual》,第三步多读多写 。一二步只是打基础,第三步多读多写才是深入学习 。多读多写才是深入学习的关键 。等,我来答很简单,看书 , 写代码,看代码,再写程序 。。。如此循环必成高手最好买 谭浩强的那本"c程序设计",再在电脑上安装个运行程序,自己边看边运行检验,首先把那些基础看懂看熟,然后再试着写程序,这也是我学习C的心得 。找个人带吧,这样容易点,也不容易放弃
2 , 怎样学好C语言如何学好c语言 作者:beck 我是一名普通的教师,c语言的疯狂爱好者 。为了让更多的人去学习,去了解这门语言,我创建了唯c世界( http://www.vcok.net)---一个普及和推广c语言的个人网站 。目前,许多人想学习c语言,甚至打电话问我 , 如何学好c语言,在这里我谈谈个人的一些看法 , 希望大家能够从中受到启发,这是我最大的心愿! 一、我们要正确认识c语言,到底值得学吗?答案是肯定的 。一方面是c语言在全世界的普及率非常高 , 去德国留学的一个朋友说,c语言是德国大学的必修课 , 而且十分重视 。我的一个学生***到北京实习回来,最大的感受就是大学三年学的最重要的课程就是c语言了 。更重要的是,目前c语言的应用也是十分广泛的,单片机,操作系统,游戏等很多的计算机领域都涉及到c语言,而c语言的影响也非常大,甚至有些软件公司,把c掌握的程度作为应聘的一个重要标准 。还有,现在的考试,二级 , 三级,四级,程序员考试等很多的考试都涉及到c语言的内容,有的占的比例很大 。无论从哪个角度看,你都应该学它 。二、既学之,则好之 。这是我的座右铭“既做之,则好之”的同胞兄弟 , 记住它,可能给你带来动力 。建议阅读《C语言程序设计》这本书或者到到我的论坛下载,地址: http://www.vcok.net/best/vcok_1.chm , 这个电子教程也可,尤其是初学者必须有一本教程,而后就该懂得如何学习它,既然是一门语言,他就汉语 , 英语一样,都有自己的语法规则 , 这部分学习起来并不难,但是要牢记,就象说英语要懂语法一样 。懂得了语法不见得就能编出程序来 , 更为重要的是掌握编程的思想,如何用简捷的方法解决一个问题 。同样做一个循环问题,可能有人要做300次循环,而有的人要做100次,这就是差距,如果你编的windows xp比别人编的win98慢3倍,谁还用你的操作系统呀!C语言只是一个基础 。我们还善于利用这些基本的东西去构造出一些新的东西,建议大家学完c语言后,继续学习《数据结构》,这样你会感觉c语言果真还有很多的东西要学 。平时 , 我们学习的时候要注意掌握每个概念,当然理论的学习是离不开实践的,尤其是c语言 , 需要你编写大量的程序,最初可以学着别人的程序打 , 慢慢就应该独立出来,把自己的想法用c语言描述出来,这是一件十分快乐的事情 。建议初学者不要看高级编程,先勤写代码、多看代码、培养风格、熟悉语法、最关键的还是把握思想 。当你能够信手拈来的时候,你的c语言才可以说学会了 。一定要养成自己独立写完一个程序的能力,这样可以有一种成就感 。不断培养这种成就感,循序渐进,进步是自然的事情 。三、学习它是个长期的过程,要不断的总结经验,我们学习就怕不能持之以恒 。关于这点大家比我更清楚 。一旦你学会了它,其他的语言就可以触类旁通了 , 例如:C++ , C#,JAVA,VB,DELPHI......这些学起来就会比那些C语言基础不扎实的人要轻松得许多!
3,C语言如何学得好参考别人的几点建议建议: 1.如果是初学者的话,在学习好课本之后建议多敲程序(可以照书上的或者别人成型的比较简单的程序照扒下来),多改程序,这样做的目的是更多更好的验证书中所讲的语句和函数,而且在修改程序得到你预期的结果的时候,你会感觉到很强的成就感,这样对你树立自信心有很大的帮助,另外,也会对TC界面的熟练操作(编译、链接、运行、DOS下的复制、剪切等等操作)和键盘的熟练操作有很大帮助; 2.一般来讲学C最大的难点多在指针(一维、二维、三维指针以及指向指针的指针等等),除了掌握好书本知识之外应尽量多读程序,分析编程者的思路,以开阔自己的想象空间(编程的技巧变化多端啊,呵呵); 3.可以找一些锻炼自己空间思维能力的方法; 4.当学习到一定程度的时候,当书本上及试卷上的“题”应付自如的时候,如果想学好C的话,就别在钻那些所谓的“题”了,那些东西是用来锻炼你的技巧的,再想提高水平的话就多找些实际应用的例子,比如自动提款机(存入款额累加,取款扣除,提款次数累计,每日最多提款次数限制报警,利息计算 , 日总帐等等),再比如仓库数据库的建立、管理及日常调用等等 。此时建议多读程序员程序集,放心这里的程序并不难,但是很专业 。没关系,别怕 , 就算被困难给难倒,也不能被困难给吓倒,不是吗?。。?另外:怎样才能学好C语言?(1)工欲善其事 , 必先利其器这里介绍几个学习C语言必备的装置和书籍:A)开发环境例如turbo C 2.0,这个曾经占据了DOS时代开发程序的大半个江山 。但是现在windows时代,用turbo C有感觉不方面,编辑程序起来很吃力 , 并且拖放,更没有函数变量自动感应功能,查询参考资料也不方便 。建议使用Visual C++,这个平台虽然体积大,但是一旦安装好了,用起来很方便 。当然,turbo C 2.0作为学习软件还是不错的 。B)一本学习教程现在C语言教材多如牛毛 , 推荐大家使用《C语言程序设计》第二版 。此书很适合初学者,并且内容也很精到 。C)利用辅助学习软件毕竟现在是Windows时代了,学习软件多如牛毛,这里向大家推荐一个“集成学习环境(C语言)”,里边的知识点总结和例程讲解都非常好,有好几千题的题库测试环境,包括一个windows下的trubo C , 初学者甚至不用装其它的编译器,就可以练习编程了 。还有一个“C语言学习系统”软件,不过感觉只是一个题库系统 , 如果你觉得题做的不够,不妨也可以试试 。(2)葵花宝典学习计算机语言最好的方法是什么?答曰:读程序 。没错,读程序是学习C语言入门最快 , 也是最好的方法 。我们大家都应该有个体验——在最初学习windows系统操作或Microsoft words如果操作的过程中,刚开始总是正儿八经地买来教材 , 结果读来读去却云里雾里 , 而当我们将教材丢在一边,拿起鼠标反复地试,几个小时就搞定 。包括学习J#,C#等其他语言,在今天的Windows时代,也不再提倡抱着书本逐行啃,而是学习它们的例程 。当然 , 对于没有学过任何计算机语言的初学者 , 多少要先阅读教程 , 认真体会所有概念,然后不放过这一章中提到的所有例程,仔细研读,直到每一行都理解了,再找几个编程题目,最好是和例程类似的或一样的,自己试图写出这段已经读懂的程序 。如果写不出来,回过头来再继续研究例程,想想自己为什么写不出来,然后再去写这段程序,反反复复 , 直到你手到擒来为止 。(3)登峰造极写程序的最高境界其实就是掌握各种解决问题的手段(数据结构)和解决问题的方法(算法) 。是不是写出底层程序就是程序设计高手呢?非也,写底层程序 , 无非是掌握了硬件的结构,况且硬件和硬件还不一样,要给一个芯片写驱动程序,无非就是掌握这块芯片的各种寄存器及其组合,然后写值读值,仅此而已 。这不过是熟悉一些I/O函数罢了 。那么怎样才算精通程序设计呢?怎样才能精通程序设计呢?举个例子:你面前有10个人,找出一个叫“张三”的人,你该怎么办?第一种方法:直接对这10个人问:“谁叫张三” 。第2种方法:你挨个去问“你是不是张三?” , 直到问到的这个人就是张三 。第三种方法:你去问一个人“你认不认识张三,指给我看” 。不要小看这个问题,你说当然会选第一种方法,那么恭喜你答对了,因为这个方法最快,效率最高,但是在程序设计中找到解决问题的最优方法和你用的手段却是考验一个程序员程序设计水平的重要标志,而且是不容易达到的 。刚才这个问题类似于数据结构和算法中的:Map数据结构,穷举查找和折半查找 。所以掌握好数据结构和一些常用算法 , 是登峰造极的必然之路 。最后给大家推荐《数据结构》,希望每一个想成为程序设计高手的人研读此书 。多上机操作,这样才能真正明白【怎么学好C语言,怎样才能学好C语言】
4,怎样学C语言方法我认为要学好C语言首先必须了解等级考试C语言的大纲和内容,以及各种辅助材料的用途 , 这是学好C的基础 。从以前的经验以及考网上的一些信息可知,要自学C语言必须准备以下资料: 1、 教材:大家现在都公认是清华大学谭浩强主编的那本 , 当然有其他的也可以,如高校出版社的 。2、 习题集:我认为清华大学的《C语言样题汇编》不错 。书后面附有答案 。3、 上机练习:我认为南开大学的那个可以 , 最好是在考前从头到尾做一遍 。答案可以去考网下载区下载 。4、 大纲:这个肯定要的,可以在考网二级版那里去下,然后打印出来 。5、 自学计划:为了做到有计划有目的地学习C语言 , 大家可以根据自己的学习(或工作)情况,制定一个自学计划,循序渐进地学习 。6、 模拟盘:为了更好地熟悉考场环境,下一个模拟盘是必不可少的,可以在http://studywang.yeah.net/ 。下载,注意 , 在下载时要把锁匙盘一起下回来 , 否则不能进入考试环境 。7、 教学光盘:如果能买到C语言的教学光盘,那当然更好,这样可以更直观地学习C语言了 。下面从微观上针对C语言的几个重点和难点,逐个谈谈具体的自学方法 。二 如何学习C语言的运算符和运算顺序 C语言的运算功能十分丰富,运算种类远多于其它程序设计语言 。因此,当多种不同运算组成一个运算表达式,即一个运算式中出现多种运算符时,运算的优先顺序和结合规则显得十分重要 。初学者往往对此感到非常困难,觉得C语言学习太繁杂 , 其实只要我们对此合理进行分类,找出它们与我们在数学中所学到运算之间的不同点之后,记住这些运算也就不困难了,有些运算符在理解后更会牢记心中,将来用起来得心应手,而有些可暂时放弃不记,等用到时再记不迟 。下面是所有的运算符按优先级不同分类列表:(对不起,因为表格显示不正常,已被我删除大家可以看书上的) 表中列出15种优先级的运算符,从高到低,优先级为1 ~ 15,最后边一栏是结合规则,除第2、3级和第14级为从右至左结合外,其它都是从左至右结合 , 它决定同级运算符的运算顺序 。下面我们通过几个例子来说明: (1) 3*20/4%10 这个表达式中出现3种运算符,是同级运算符,运算顺序按从左至右结合,因此先计算3 * 20=60,然后被4除,结果为15,最后是%(求余数)运算,所以表达式的最终结果为15%10 = 5 (2)a = 3;b = 5;c =++ a* b ;d =a + +* b; 例子中的“;”是C语言的语句分隔符,执行顺序为从左到右,第1条语句执行后a的值为3,第2条语句执行后b的值为5,第3条语句中有两个运算符前置+ +和*,按表中所列顺序,+ +先执行,*后执行 , 所以+ + a执行后,a的值为4,由于+ +为前置运算,所以a的值4参与运算,C的值为20,最后执行第4条语句,由于a + +为后置运算 , 所以a值为4参与运算,使得d的值仍为20,而a参与运算后其值加1,值为5 。这个例子执行后 , a的值为5,b的值为5,c的值为20,d的值也是20 。(3)a = 3,b = 5 , b+ = a,c = b* 5 例子中的“,”是逗号结合运算,上式称为逗号表达式,自左向右结合,最后一个表达式的结果值就是逗号表达式的结果,所以上面的逗号表达式结果为40,a的值为3,b的值为8,c的值为40 。三、如何学习C语言的四种程序结构 (1)顺序结构 这种结构的程序比较简单,就是按照语句的排列顺序依次执行的机制 。顺序结构的执行顺序是自上而下,依次执行,因此编写程序也必须遵守这一规定,否则你的程序执行结果就不对 。例如;a = 3 , b = 5 , 现交换a,b的值,正确的程序为: c = a; a = b; b = c; 执行结果是a = 5 , b = c = 3如果改变其顺序,写成: a = b; c = a; b = c; 则执行结果就变成a = b = c = 5,不能达到预期的目的 , 这是初学者常犯的错误 。顺序结构可以独立使用构成一个简单的完整程序,常见的输入、计算,输出三步曲的程序就是顺序结构,例如计算圆的面积,其程序的语句顺序就是输入圆的半径R,计算S = 3.14159*R*R,输出圆的面积S 。而大多数情况下顺序结构都是作为程序的一部分 , 与其它结构一起构成一个复杂的程序,例如分支结构中的块体、循环结构中的循环体等 。C语言自学方法(2) (2) 分支结构 分支结构与顺序结构不同,其执行是依据一定的条件选择执行路径,而不是严格按照语句出现的物理顺序 。分支结构的程序设计方法的关键在于构造合适的分支条件和分析程序流程,根据不同的程序流程选择适当的分支语句 。分支结构适合于带有逻辑条件判断的计算,设计这类程序时往往都要先绘制其程序流程图,然后根据程序流程写出源程序,这样做把程序设计分析与语言分开,使得问题简单化,易于理解 。程序流程图是根据解题分析所绘制的程序执行流程图 。学习分支结构不要被分支嵌套所迷惑,只要弄清基本的分支结构,嵌套结构也就不难了 。嵌套只不过是分支块体中又包括分支语句而已,不是新知识,只要你基础知识扎实,分支嵌套也难不住你,下面我们重点讨论几种基本的分支结构的学习方法 。①If(条件) { 块 } 这种分支结构中的块可以是一条语句,此时“{ }”可以省略,也可以是多条语句 。它有两条分支路径可选 , 一条是条件为真,执行块,另一条是条件不满足 , 跳过块 。如,计算x的绝对值 , 根据绝对值定义,我们知道,当x>=0时,其绝对值不变 , 而x<0时其绝对值是为x的反号,因此程序段为:if(x<0) x=-x; ②if(条件) {块1} else {块2} 这是典型的分支结构,如果条件成立,执行块1,否则执行块2,块1和块2都有1条或若干条语句构成 。如:求ax^2+bx+c=0的根 分析:因为当b^2-4ac>=0时,方程有两个实根,否则(b^2-4ac<0)有两个共轭复根 。其程序段如下: d=b*b-4*a*c; if(d>=0) {x1=(-b+sqrt(d))/2a; x1=(-b-sqrt(d))/2a; printf(“x1=%8.4f,x2=%8.4f\n”,x1,x2); } else {r=-b/(2*a); i =sqrt(-d)/(2*a); printf(“x1=%8.4f+%8.4fi\n”r, i); printf(“x2=%8.4f-%8.4fi\n”r,i) } ③多路分支:其语句格式为: if(条件1) {块1}; else if(条件2) {块2} else if(条件3) {块3} …… else if(条件n) {块n} else {块n+1} ④switch语句: switch 语句也是多分支选择语句,又称为多路开关语句 , 到底执行哪一块,取决于开关设置 , 也就是表达式的值与常量表达式相匹配的那一路 , 它不同if—else 语句,它的所有分支都是并列的,程序执行时,由第一分支开始查找 , 如果相匹配 , 执行其后的块,接着执行第2分支,第3分支……的块,直到遇到break语句;如果不匹配,查找下一个分支是否匹配 。(3)循环结构: 循环结构可以减少源程序重复书写的工作量,用来描述重复执行某段算法的问题,这是程序设计中最能发挥计算机特长的程序结构 , C语言中提供四种循环,即goto循环、while循环、do –while循环和for循环 。四种循环可以用来处理同一问题,一般情况下它们可以互相代替换,但一般不提昌用goto循环,所以下面我们重点讲解另外的三种循环 。常用的三种循环结构学习的重点在于弄清它们相同与不同之处,以便在不同场合下使用,大家好好看一下书中三种循环的格式和执行顺序,如何替换使用 , 如把while循环的例题,用for语句重新编写一个程序,这样能更好地理解它们的作用 。注意:在while和do—while循环体内和for 循环中的第3语句中,应包含趋于结束的语句(如I++,I--),否则就可能成了一个死循环,这也是初学者的一个常见错误 。下面我们来讨论下这三种循环的异同之处: 用while和do—while循环时,循环变量的初始化的操作应在循环体之前,而for循环是在语句1中进行的;while 循环和for循环都是先判断表达式,后执行循环体,而do—while循环是先执行循环体后判断表达式,也就是说do—while的循环体最少被执行一次,而while 循环和for就不一定了 。这三种循环都可以用break语句跳出循环 , 用continue语句结束本次循环,而goto语句与if构成的循环,不能用break和 continue语句进行控制 。这三种结构并不是彼此孤立的,在循环中可能出现分支、顺序结构,分支中也可能出现循环、顺序结构而把循环、分支看成一个语句,它又是构成顺序结构的一个元素,因此这三种结构相互结合 , 就能实现各种算法 , 设计出解题程序,但若是很大的题目,这样编出的程序往往很长,重复结构多,并且可阅读性差,因此我们常将C程序设计成模块化结构 。(4)模块化程序结构 C语言的模块化程序结构用函数来实现,即将复杂的C程序分为若干模块,每个模块都编写成一个合法的C函数,然后用主函数调用函数及函数调用函数实现一大C程序:C程序=主函(main)+若干个函数 。在程序设计中,常将一些常用的功能模块写成函数,也可以将大程序段分割成若干函数,前者目的在于减少重复编写程序段的工作量,后者目的在于缩短模块长度 , 以便程序阅读方便 。一个源程序文件由一个或多个函数组成,它是一个编译单位 , 而一个C程序由一个或多个源程序文件组成 。对较大的程序,往往分成多个文件,这样可以分别编写、分别编译,提高高调试效率,一个源程序文件可以被多个C程序公用 。C程序的的执行是从main()函数开始,调用其它函数后流程回到main函数 , 在main中结束整个函数运行,main函数的称是系统规定的,用户可以修改其内容即函数体 , 但不能修改其名称和参数,一个C程序必须有一个main函数,也只能有一个main函数 。所有函数都是平行的 , 即在定义函数时是互相独立的一个函数度不从属于另一个函数,即函数不能嵌套定义,但可以互相调用,但不能调用main函数 。函数分成两类,即标准函数和用户自定义函数,标准函数又称库函数,由系统提供,用户可直接调用,C语言提供了丰富的库函数 , 请考生在编写C程序时查阅教材后的函数说明 , 这可节省你的编程工作量;用户自定义函数由编程者自己编写.5,如何学好C语言按照我们现在的教学大纲和教学要求,只要同学们掌握一些方法 , 克服心理上畏难、不轻言放弃,是完全可以学好的 。《C程序设计》的内容很丰富,按照我们现在的教学大纲,教学的主要内容是基础知识、四种结构的的程序设计、函数与数组的应用和一些简单的算法 。在学习时,同学们应该把主要精力放在这些部分,通过实践(练习和上机调试等熟练掌握 。当然 , 在初学C语言时,可能会遇到有些问题理解不透,或者表达方式与以往数学学习中不同(如运算符等),这就要求不气馁,不明白的地方多问多想,鼓足勇气进行学习,待学完后面的章节知识,前面的问题也就迎刃而解了,这一方面我感觉是我们同学最欠缺,大多学不好的就是因为一开始遇到困难就放弃 , 曾经和好多同学谈他的问题,回答是听不懂、不想听、放弃这样三个过程,我反问 , 这节课你听过课吗?回答又是没有,根本就没听过课,怎么说自己听不懂呢?相应的根本就没学习 , 又谈何学的好?学习C语言始终要记住“曙光在前头”和“千金难买回头看”,“千金难买回头看”是学习知识的重要方法 , 就是说,学习后面的知识,不要忘了回头弄清遗留下的问题和加深理解前面的知识 , 这是我们学生最不易做到的,然而却又是最重要的 。比如:在C语言中最典型的是关于结构化程序设计构思,不管是那种教材,一开始就强调这种方法,这时也许你不能充分体会,但是学到函数时 , 再回头来仔细体会,温故知新,理解它就没有那么难了 。学习C语言就是要经过几个反复,才能前后贯穿,积累应该掌握的C知识 。那么 , 我们如何学好《C程序设计》呢?一.学好C语言的运算符和运算顺序这是学好《C程序设计》的基础,C语言的运算非常灵活,功能十分丰富,运算种类远多于其它程序设计语言 。在表达式方面较其它程序语言更为简洁,如自加、自减、逗号运算和三目运算使表达式更为简单,但初学者往往会觉的这种表达式难读,关键原因就是对运算符和运算顺序理解不透不全 。当多种不同运算组成一个运算表达式 , 即一个运算式中出现多种运算符时,运算的优先顺序和结合规则显得十分重要 。在学习中,只要我们对此合理进行分类,找出它们与我们在数学中所学到运算之间的不同点之后 , 记住这些运算也就不困难了,有些运算符在理解后更会牢记心中,将来用起来得心应手,而有些可暂时放弃不记,等用到时再记不迟 。先要明确运算符按优先级不同分类,《C程序设计》运算符可分为15种优先级,从高到低,优先级为1~15 , 除第2、3级和第14级为从右至左结合外 , 其它都是从左至右结合,它决定同级运算符的运算顺序 。下面我们通过几个例子来说明:(1)5*8/4%10这个表达式中出现3种运算符,是同级运算符 , 运算顺序按从左至右结合,因此先计算5*8=40,然后被4除,结果为10,最后是%(求余数)运算,所以表达式的最终结果为10%10=0;(2)a=3;b=5;c=++a*b;d=a++*b;对于c=++a*b来说,按表中所列顺序 , ++先执行 , *后执行 , 所以++a执行后,a的值为4,由于++为前置运算,所以a的值4参与运算,C的值计算式为4*5=20而不是3*5=15了;而对于d=a++*b来说,由于a++为后置运算,所以a值为4参与运算,使得d的值仍为20,而a参与运算后其值加1,值为5 。这个例子执行后,a的值为5,b的值为5 , c的值为20,d的值也是20;(3)(a=3,b=5,b+=a,c=b*5)例子中的“,”是逗号结合运算,上式称为逗号表达式,自左向右结合,最后一个表达式的结果值就是逗号表达式的结果,所以上面的逗号表达式结果为40,a的值为3,b的值为8,c的值为40 。(4)a=5;b=6;c=a>b?a:b;例中的a>b?a:b是一个三目运算 , 它的功能是先做关系运算a>b部分,若结果为真,则取问号后a的值,否则取冒号后b的值,因此c的值应该为6,这个运算可以用来代替if…else…语句的简单应用 。二.学好C语言的四种程序结构(1)顺序结构顺序结构的程序设计是最简单的,只要按照解决问题的顺序写出相应的语句就行,它的执行顺序是自上而下 , 依次执行 。例如;a=3 , b=5,现交换a,b的值,这个问题就好象交换两个杯子水,这当然要用到第三个杯子,假如第三个杯子是c,那么正确的程序为:c=a;a=b;b=c;执行结果是a=5,b=c=3如果改变其顺序 , 写成:a=b;c=a;b=c;则执行结果就变成a=b=c=5,不能达到预期的目的 , 初学者最容易犯这种错误 。顺序结构可以独立使用构成一个简单的完整程序,常见的输入、计算,输出三步曲的程序就是顺序结构,例如计算圆的面积,其程序的语句顺序就是输入圆的半径r,计算s=3.14159*r*r,输出圆的面积s 。不过大多数情况下顺序结构都是作为程序的一部分,与其它结构一起构成一个复杂的程序 , 例如分支结构中的复合语句、循环结构中的循环体等 。(2)分支结构顺序结构的程序虽然能解决计算、输出等问题,但不能做判断再选择 。对于要先做判断再选择的问题就要使用分支结构 。分支结构的执行是依据一定的条件选择执行路径 , 而不是严格按照语句出现的物理顺序 。分支结构的程序设计方法的关键在于构造合适的分支条件和分析程序流程,根据不同的程序流程选择适当的分支语句 。分支结构适合于带有逻辑或关系比较等条件判断的计算,设计这类程序时往往都要先绘制其程序流程图 , 然后根据程序流程写出源程序,这样做把程序设计分析与语言分开,使得问题简单化,易于理解 。程序流程图是根据解题分析所绘制的程序执行流程图 。学习分支结构不要被分支嵌套所迷惑 , 只要正确绘制出流程图,弄清各分支所要执行的功能 , 嵌套结构也就不难了 。嵌套只不过是分支中又包括分支语句而已,不是新知识,只要对双分支的理解清楚,分支嵌套是不难的 。下面我介绍几种基本的分支结构 。①if(条件)分支体}这种分支结构中的分支体可以是一条语句,此时“②if(条件)else这是典型的分支结构 , 如果条件成立,执行分支1 , 否则执行分支2,分支1和分支2都可以是1条或若干条语句构成 。如:求ax^2+bx+c=0的根分析:因为当b^2-4ac>=0时,方程有两个实根 , 否则(b^2-4ac<0)有两个共轭复根 。其程序段如下:d=b*b-4*a*c;if(d>=0)x1=(-b-sqrt(d))/2a;printf(“x1=%8.4f,x2=%8.4f\n”,x1,x2);}elsei=sqrt(-d)/(2*a);printf(“x1=%8.4f+%8.4fi\n”r,i);printf(“x2=%8.4f-%8.4fi\n”r,i)}③嵌套分支语句:其语句格式为:if(条件1)elseif(条件2)elseif(条件3)……elseif(条件n)else嵌套分支语句虽可解决多个入口和出口的问题,但超过3重嵌套后,语句结构变得非常复杂,对于程序的阅读和理解都极为不便,建议嵌套在3重以内,超过3重可以用下面的语句 。④switch开关语句:该语句也是多分支选择语句,到底执行哪一块,取决于开关设置,也就是表达式的值与常量表达式相匹配的那一路,它不同if…else语句,它的所有分支都是并列的,程序执行时,由第一分支开始查找,如果相匹配 , 执行其后的块,接着执行第2分支,第3分支……的块,直到遇到break语句;如果不匹配,查找下一个分支是否匹配 。这个语句在应用时要特别注意开关条件的合理设置以及break语句的合理应用 。(3)循环结构:循环结构可以减少源程序重复书写的工作量 , 用来描述重复执行某段算法的问题,这是程序设计中最能发挥计算机特长的程序结构,C语言中提供四种循环,即goto循环、while循环、do–while循环和for循环 。四种循环可以用来处理同一问题 , 一般情况下它们可以互相代替换,但一般不提倡用goto循环 , 因为强制改变程序的顺序经常会给程序的运行带来不可预料的错误,在学习中我们主要学习while、do…while、for三种循环 。常用的三种循环结构学习的重点在于弄清它们相同与不同之处,以便在不同场合下使用,这就要清楚三种循环的格式和执行顺序 , 将每种循环的流程图理解透彻后就会明白如何替换使用,如把while循环的例题,用for语句重新编写一个程序,这样能更好地理解它们的作用 。特别要注意在循环体内应包含趋于结束的语句(即循环变量值的改变) , 否则就可能成了一个死循环,这是初学者的一个常见错误 。在学完这三个循环后,应明确它们的异同点:用while和do…while循环时,循环变量的初始化的操作应在循环体之前,而for循环一般在语句1中进行的;while循环和for循环都是先判断表达式 , 后执行循环体,而do…while循环是先执行循环体后判断表达式,也就是说do…while的循环体最少被执行一次,而while循环和for就可能一次都不执行 。另外还要注意的是这三种循环都可以用break语句跳出循环,用continue语句结束本次循环,而goto语句与if构成的循环,是不能用break和continue语句进行控制的 。顺序结构、分支结构和循环结构并不彼此孤立的,在循环中可以有分支、顺序结构 , 分支中也可以有循环、顺序结构,其实不管哪种结构,我们均可广义的把它们看成一个语句 。在实际编程过程中常将这三种结构相互结合以实现各种算法,设计出相应程序,但是要编程的问题较大,编写出的程序就往往很长、结构重复多,造成可读性差,难以理解,解决这个问题的方法是将C程序设计成模块化结构 。(4)模块化程序结构C语言的模块化程序结构用函数来实现,即将复杂的C程序分为若干模块,每个模块都编写成一个C函数,然后通过主函数调用函数及函数调用函数来实现一大型问题的C程序编写,因此常说:C程序=主函数+子函数 。因些,对函数的定义、调用、值的返回等中要尤其注重理解和应用 , 并通过上机调试加以巩固 。三.掌握一些简单的算法编程其实一大部分工作就是分析问题,找到解决问题的方法,再以相应的编程语言写出代码 。这就要求掌握算法 , 根据我们的《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)与a[1]交换 , 此时a[1]中存放了10个中最小的数 。第二轮将a[2]与a[3]~a[10]比较,将剩下9个数中的最小者a与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>a[j]a=a[j];a[j]=temp;}结语:当我们把握好上述几方面后,只要同学们能克服畏难、厌学、上课能专心听讲 , 做好练习与上机调试,其实C语言并不难学 。看你往windows c,还是Linux c方面 , 多敲代码实践Linux c 用Linux环境推荐一本书《c和指针》,这本书比谭浩强的书好百倍,c语言工程师必看的 。英语好的话,最好看原版 。多看几遍,同时要动手做练习的 , 想要调试方便的话,安装一个好的IDE(开发环境) , 里面都支持标准c编译器的,比如VC6.0,VS2003,VS2005,VS2008 , vc6.0对系统的需求最小,初学者非常适合,如果喜欢borland C++也好用的 。这些都方便调试的 。不要使用tuborC,没啥用 。水平好的话,自己写makefile改变编译规则 。

    推荐阅读