首页

文章

c语言怎样深入学习?

发布网友 发布时间:2022-03-01 15:59

我来回答

6个回答

热心网友 时间:2022-03-01 17:28

多看书:谭浩强《C程序设计》、C创造者的《C程序设计语言》、《C陷阱与缺陷》、《C专家编程》(经典)、《C程序员成长攻略》、《算法导论》、《数据结构》等等;
多读代码;多抄袭代码;多动手;多浏览相关网站;多问;另外还要了解一些电路方面的知识,会看SCH和PCB电路,反复阅读相关芯片资料,多做相关方面的开发工作,积累工作经验,光看是不行的,必须亲自冻手设计,初学者可以用开发板来学习,用人家的例程。
努力就会成功!祝你早日入门啊!

热心网友 时间:2022-03-01 18:46

学习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(条件)
{
分支体
}
这种分支结构中的分支体可以是一条语句,此时“{ }”可以省略,也可以是多条语句即复合语句。它有两条分支路径可选,一是当条件为真,执行分支体,否则跳过分支体,这时分支体就不会执行。如:要计算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}
嵌套分支语句虽可解决多个入口和出口的问题,但超过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[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语言的基本语法和规定。
* 掌握程序设计基本算法和思路,开拓思路,
* 提高上机操作能力,掌握上机调试程序的方法
* 培养自学能力,强调自主学习。
* 养成良好的程序设计习惯。

通过总结多年的教学经验,总结学生在学习过程中具有规律性的特点,可以发现,在本课程学习过程中学生经常出现下面这些问题:
* 注重理论学习,忽视上机编程实践,造成"只能用笔在纸上编程"的奇怪现象。特别是一些女同学,一到机器前面就手忙脚乱,如果程序再出现错误,就更不知道该如何查找错误,如何排除错误了。
*入门时自以为难度大,产生畏难情绪,总是怕,最后因为怕学不好而导致没有学好。
*前期没有抓紧,希望通过突击完成课程学习。本课程要靠平时的积累,几乎不能靠临时突击,由于前面基础补扎实,到了后面已经无法弥补。
*太注重学习语句的语法规定,忽视了对编程的思路和方法的训练。有些同学再学习结束的感觉就是:对每一个语句的语法和每一条规定都明白,就是面对实际问题的时候不知道该如何思考,该如何编程。
*急于求成,总想编写综合性的程序,忽视基本概念,忽视基本功的训练和练习。在编写程序中发现问题,一追根源,全是概念或基础问题。

为了学好本课程,没有什么窍门,建议大家采用如下的"笨"方法:
*认真听讲,积极思考,提高上课效率。教师上课讲述的都是课程的重点和难点,听好课程可以达到"事半功倍"的目的。
*主动上机,多多实践,提高动手能力。通过上机实践来验证所学的理论,通过在机器上查找错误来巩固概念,通过提高上机能力来促进理论学习,开阔编程思路,提高反映速度,提高分析问题解决问题的能力,锻炼心理素质,提高心理承受能力。
*学习初期重点掌握语言的语法和规定。这是基础。
*后期重点掌握编程的思路和基本算法。这是重点。
*学会自学,加强交流,及时答疑解惑。可以采用多种形式进行交流,可以是传统的面面进行答疑,也可以是利用网络通过邮件、BBS进行网上交流。不要将疑问积累到最后。
*开阔眼界,打开思路,多看几本书。C语言的书非常多,各有自己的特色,要找到适合自己的参考数目

2 回复:C语言学习方法-----北京理工大学李凤霞教授等专家谈
1.不要看到别人的回复第一句话就说:给个代码吧!你应该想想为什么。当你自己想
出来再参考别人的提示,你就知道自己和别人思路的差异。
2.初学者请不要看太多太多的书那会误人子弟的,先找本系统的学,很多人用了很久
都是只对部分功能熟悉而已,不系统还是不够的。
3.看帮助,不要因为很难而自己是初学者所以就不看;帮助永远是最好的参考手册,
虽然帮助的文字有时候很难看懂,总觉得不够直观。
4.不要被对象、属性、方法等词汇所迷惑;最根本的是先了解最基础知识。
5.不要放过任何一个看上去很简单的小问题--他们往往并不那么简单,或者可以引伸
出很多知识点;不会举一反三你就永远学不会。
6.知道一点东西,并不能说明你会写脚本,脚本是需要经验积累的。
7.学脚本并不难,JSP、ASP、PHP等等也不过如此--难的是长期坚持实践和不遗余力的博览
群书;
8.看再多的书是学不全脚本的,要多实践
9.把时髦的技术挂在嘴边,还不如把过时的技术记在心里;
10.学习脚本最好的方法之一就是多练习;
11.在任何时刻都不要认为自己手中的书已经足够了;
12.看得懂的书,请仔细看;看不懂的书,请硬着头皮看;
13.别指望看第一遍书就能记住和掌握什么--请看第二遍、第三遍;
14.请把书上的例子亲手到电脑上实践,即使配套光盘中有源文件;
15.把在书中看到的有意义的例子扩充;并将其切实的运用到自己的工作中;
16.不要漏掉书中任何一个练习--请全部做完并记录下思路;
17.当你用脚本到一半却发现自己用的方法很拙劣时,请不要马上停手;请尽快将余
下的部分粗略的完成以保证这个代码的完整性,然后分析自己的错误并重新编写和工
作。
18.别心急,写脚本确实不容易;水平是在不断的实践中完善和发展的;
19.每学到一个脚本难点的时候,尝试着对别人讲解这个知识点并让他理解----你能
讲清楚才说明你真的理解了;
20.记录下在和别人交流时发现的自己忽视或不理解的知识点;
21.保存好你做过的所有的源文件----那是你最好的积累之一;
22.对于网络,还是希望大家能多利用一下,很多问题不是非要到论坛来问的,首先
你要学会自己找答案,比如google、百度都是很好的搜索引擎,你只要输入关键字就
能找到很多相关资料,别老是等待别人给你希望,看的出你平时一定也很懒!
23.到一个论坛,你学会去看以前的帖子,不要什么都不看就发帖子问,也许你的问
题早就有人问过了,你再问,别人已经不想再重复了,做为初学者,谁也不希望自己
的帖子没人回的。
24.虽然不是打击初学者,但是这句话还是要说:论坛论坛,就是大家讨论的地方,
如果你总期望有高手总无偿指点你,除非他是你亲戚!!讨论者,起码是水平相当的
才有讨论的说法,如果水平真差距太远了,连基本操作都需要别人给解答,谁还跟你
讨论呢。能找到很多相关资料,别老是等待别人给你希望,看的出你平时一定也很懒!
25.到一个论坛,你学会去看以前的帖子,不要什么都不看就发帖子问,也许你的问
题早就有人问过了,你再问,别人已经不想再重复了,做为初学者,谁也不希望自己
的帖子没人回的。
26.虽然不是打击初学者,但是这句话还是要说:论坛论坛,就是大家讨论的地方,
如果你总期望有高手总无偿指点你,除非他是你亲戚!!讨论者,起码是水平相当的
才有讨论的说法,如果水平真差距太远了,连基本操作都需要别人给解答,谁还跟你
讨论呢。
别做浮躁的人
浮躁的人容易问:我到底该学什么;----别问,学就对了;
浮躁的人容易问:JS有钱途吗;----建议你去抢银行;
浮躁的人容易说:我要中文版!我英文不行!----不行?学呀!
浮躁的人分两种:只观望而不学的人;只学而不坚持的人;
浮躁的人永远不是一个

结语:当我们把握好上述几方面后,只要同学们能克服畏难、厌学、上课能专心听讲,做好练习与上机调试,其实C语言并不难学。

热心网友 时间:2022-03-01 20:21

编程这个东西,有些纠结,不跟着做项目就不知道到底有啥用.
尤其是c,不做操作系统方面的编程可能很难想象它有啥用处.
我是比较喜欢做linux下的开发,毕竟c用的多一些,所以不妨试着了解下操作系统,编写一些平时用着觉得重复性的工作,或者试着写写那些需要用网络连接的那种,例如写个聊天室啊,局域网传输的软件啊什么的,当然开始做的简单,简陋些都不要紧,重要的是成功时的那种兴奋,呵呵.
编程要学的东西很多啊,慢慢了解了可能就不会这么迷惑了吧,楼主加油~

热心网友 时间:2022-03-01 22:12

想了解系统的操作,看windows程序设计第五版,深入理解操作系统,不过这两本书都是大头,很难看下去。
其实你就是想找个有实际动手机会的东西来学,不过项目是需要有一定的代码基础的,所以先踏实看基础也没什么不好。
真按耐不住,很多程序设计课还有软件工程课都有小项目的,你可以拿来练手~!

热心网友 时间:2022-03-02 00:20

玩玩单片机吧,它的编辑器是KEIL ,全用C语言编的,而且还可以做出一些小作品的。C语言是玩出来的 ,不是学出来的。

热心网友 时间:2022-03-02 02:45

看书,写代码
前事不忘,__ 只可意会,___ 皮之不存,__ __,不为瓦全,__ __,不见泰山... 薪酬:以薪酬战略撬动企业变革内容简介 领先型薪酬策略在实践中的应用 领先型薪酬策略什么是领先型薪酬策略 什么是领先型薪酬策略 第三方支付都有什么 银行用车抵押贷款 雌雄眼的女人不能惹雌雄眼的女人旺夫吗 修缮,与修理的区别 小弟想买一款索尼的笔记本。麻烦各位推荐一下。颜色必须是黑色的,键盘... SONY的笔记本电脑硬盘大概多钱一个 先说谢谢了 sony的笔记本ea38ec 到底用的是什么牌子的内存 尔必达?威刚... 在Sony Style上面买机子,除了鼠标,包,其他东西都全么? 有谁知道SONY的最新最小VGN-UX的笔记本好无好用?介绍下基本功能~!_百度... 怎样让孩子主动找老师补课? 表格列求和公式怎么设置 求和函数公式怎么输入 北京注册成立一个公司需要多少钱 北京公司都是什么 手机导航地图语音怎么下载 如何分别真金和仿金首饰 怎样区分真金和仿金首饰呢 小学生新年晚会主持人的串词!!(不要太多)急 大大后天就需要了!!!_百度... 周年晚会策划公司 奥格瑞玛传送门大厅在哪 奥格瑞玛传送门大厅怎么走 锻炼颈椎的几个动作 水多久能结冰 冰能在多长时间内形成 请问水低于0度会结冰吗? 如何防止脱发严重 嘴唇上有黑印用蜜蜡和棉线去除了胡须 软柿子的热量 孕妇可以吃软柿子吗不是西红柿 脆柿子和软柿子的区别 脆柿子好还是软柿子好 软柿子可以多吃吗 “鱼悬洁白振清风”的出处是哪里 用大自然的声音评课好吗? 妇产科博士找超声科工作容易吗 怎能把微信6.2.0版本换回6.1.2版 微信群6.2.4怎么增加人数上限 微信6.2.2如何备份手机通讯录 电脑桌面图标不能放大? 有什么好用的识图软件 识图认人哪个软件最好 手机识图软件什么软件能识别图片位置 小米手机自动锁屏时间怎么修改 小米手机屏幕锁定时间设置教程 能举起100斤算大力吗 中医美容专业是什么 中医美容证有什么用 单声道音频什么意思(开启单声道音频有什么好处) 单声道音频是什么,有什么用处? 户口还未迁移到婆家 娘家户口怎么就没了呢 如何有效的学习C语言 c语言好学吗?怎样才能学好c语言? 苹果手机没有微信提示怎么回事 苹果手机微信没有了怎么恢复 苹果手机微信没网络是怎么回事 苹果手机微信没有删除但是不见了怎么办? 西餐中刀和叉的使用方法 西餐中刀叉的使用方法 在软考高级资格考试里,哪个证书用处最大? 西餐礼仪中的刀叉用法有哪些? 吃西餐时候刀叉的使用方法,谢谢 西餐的刀叉正确使用方法 西餐餐具的正确使用方法是什么? 正宗的西餐刀叉到底是如何使用的? 西餐刀叉的用法介绍怎样使用刀叉符合礼仪? 西餐刀叉用法 西餐刀叉的用法介绍 怎样使用刀叉符合礼仪 西餐刀叉的使用方法 视力R3.25,L2.25,是什么概念,对应度数大概是多少?望高人指教,谢谢! 新生儿窒息复苏网考试完还是显示证书过期怎么回事 EXCEL表格里怎么设置求和 excel表格的单独格求和怎么做 大家都用什么编译器? C语言的. 做清蒸鱼用什么鱼好 做清蒸鱼的5大窍门 如何做好清蒸鱼窍门 清蒸鱼怎么做好 怎么才能查到在青岛市北区核酸检测结果? 清蒸鱼正确做法窍门 如何做清蒸鱼? 清蒸鱼的做法 最正宗的做法窍门 清蒸鱼怎么做好吃又简单视频窍门 C语言怎么学啊!! c语言怎么学啊??? 清蒸鱼的做法窍门 如何做好一道清蒸鱼? 清蒸鱼怎么才能做得细腻软嫩又入味 清蒸鱼怎么做没有腥味? 如何查询对方实名认证的名字? 一个朋友被骗了几万,怎样才能通过查到她实名信息? 对方企业怎么查是不是实名?
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com