1. 为什么知乎上大多数人不推荐c语言入门
我就是c入门,一开始很难理解,啃书啃的特别痛苦。不过克服了这个,后面学python,c++都是一帆风顺,因为c算是挺底层的高级语言,很多细节,掌握了这些其他的就不再话下了。所以用c入门可以认为是从较难的开始,打牢这个基础后面就容易了。
大多数人觉得c不适合入门也是这个原因,一开始入门太难太慢成效低,很容易打击学习积极性,尤其是自学的话更困难。所以建议自学还是从易到难深入,python就是公认的很简单的入门语言。有了c做基础一周内就能掌握。没有基础的话几个月也差不多
2. 学c语言,该怎么学,才能成c大神
学习C语言始终要记住“曙光在前头”和“千金难买回头看”,“千金难买回头看”是学习知识的重要方法,就是说,学习后面的知识,不要忘了回头弄清遗留下的问题和加深理解前面的知识,这是我们学生最不易做到的,然而却又是最重要的。学习C语言就是要经过几个反复,才能前后贯穿,积累应该掌握的C知识。
1.学好C语言的运算符和运算顺序
学好C语言的运算符和运算顺序
这是学好《C程序设计》的基础,C语言的运算非常灵活,功能十分丰富,运算种类远多于其它程序设计语言。在表达式方面较其它程序语言更为简洁,如自加、自减、逗号运算和三目运算使表达式更为简单,但初学者往往会觉的这种表达式难读,关键原因就是对运算符和运算顺序理解不透不全。当多种不同运算组成一个运算表达式,即一个运算式中出现多种运算符时,运算的优先顺序和结合规则显得十分重要。在学习中,只要我们对此合理进行分类,找出它们与我们在数学中所学到运算之间的不同点之后,记住这些运算也就不困难了,有些运算符在理解后更会牢记心中,将来用起来得心应手,而有些可暂时放弃不记,等用到时再记不迟。
先要明确运算符按优先级不同分类,《C程序设计》运算符可分为15种优先级,从高到低,优先级为1 ~ 15,除第2、3级和第14级为从右至左结合外,其它都是从左至右结合,它决定同级运算符的运算顺序.
END
二.学好C语言的四种程序结构
顺序结构
顺序结构的程序设计是最简单的,只要按照解决问题的顺序写出相应的语句就行,它的执行顺序是自上而下,依次执行。
例如;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。不过大多数情况下顺序结构都是作为程序的一部分,与其它结构一起构成一个复杂的程序,例如分支结构中的复合语句、循环结构中的循环体等。
分支结构
顺序结构的程序虽然能解决计算、输出等问题,但不能做判断再选择。对于要先做判断再选择的问题就要使用分支结构。分支结构的执行是依据一定的条件选择执行路径,而不是严格按照语句出现的物理顺序。分支结构的程序设计方法的关键在于构造合适的分支条件和分析程序流程,根据不同的程序流程选择适当的分支语句。分支结构适合于带有逻辑或关系比较等条件判断的计算,设计这类程序时往往都要先绘制其程序流程图,然后根据程序流程写出源程序,这样做把程序设计分析与语言分开,使得问题简单化,易于理解。程序流程图是根据解题分析所绘制的程序执行流程图。
学习分支结构不要被分支嵌套所迷惑,只要正确绘制出流程图,弄清各分支所要执行的功能,嵌套结构也就不难了。嵌套只不过是分支中又包括分支语句而已,不是新知识,只要对双分支的理解清楚,分支嵌套是不难的。下面我介绍几种基本的分支结构。
①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语句的合理应用。
循环结构
循环结构可以减少源程序重复书写的工作量,用来描述重复执行某段算法的问题,这是程序设计中最能发挥计算机特长的程序结构,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程序设计成模块化结构。
模块化程序结构
C语言的模块化程序结构用函数来实现,即将复杂的C程序分为若干模块,每个模块都编写成一个C函数,然后通过主函数调用函数及函数调用函数来实现一大型问题的C程序编写,因此常说:C程序=主函数+子函数。 因此,对函数的定义、调用、值的返回等中要尤其注重理解和应用,并通过上机调试加以巩固。
END
三.掌握一些简单的算法
1
编程其实一大部分工作就是分析问题,找到解决问题的方法,再以相应的编程语言写出代码。这就要求掌握算法,根据我们的《C程序设计》教学大纲中,只要求我们掌握一些简单的算法,在掌握这些基本算法后,要完成对问题的分析就容易了。如两个数的交换、三个数的比较、选择法排序和冒泡法排序,这就要求我们要清楚这些算法的内在含义。
结语:当我们把握好上述几方面后,只要大家能克服畏难、厌学、上课能专心听讲,做好练习与上机调试,其实C语言并不难学。
3. 狂人c程序员入门必备这本书怎么样知乎
这书别看了……讲得忒乱。C语言入门推荐看《C和指针》或者《Linux C编程一站式学习》。实在不行看谭浩强的《C程序设计》也凑合,经典的K&R版《C语言程序设计》是进阶读本。《C陷阱和缺陷》侧重C语言的使用误区,《C专家编程》部分内容跟UNIX操作系统相关。
(1)你在源代码中写a和'a'有什么区别?
你的程序实际上是写在txt文件中(.c、.cpp啥的都是无格式文本)
如果你直接在源程序中写a,则编译器把它当成是你程序中的一个变量;
例如你在程序代码中写一句"int abc = 100;",abc中的a被编译器理解成一个标识符/名称的组成部分。
如果你在源程序中写'a',则编译器遇到单引号把它理解成一个字符常量,这完全是编译器词法分析过程中的区别。
不管是a还是'a',你写在源程序文件中的内容都可以叫做代码的组成成分(如果不是资源数据)。
(2)'a'并非char类型,事实上它是int类型
这话说得不仅让人难以理解,而且根本就是错的。'A'是char类型常量无疑,注意区分术语integral type(整数类型,包括有符号或无符号的int, short, char)和integer(整型int),看英文书这个区别很明显,比如case子句都要求integral type,不一定是int类型。
(3)啥是ASCII码
0x34、'a'等都是二进制机器码的一种记录方式。程序编译之后,'A'和数值65的二进制码是相同的,所以有时用int类型的数值常量代替char常量能得到同样的结果(很多时候还牵涉到隐式类型转换,初学者先不管),这其实是不太规范的。计算机喜欢用机器码,源码是写给人看的,所以有些程序虽然机器码是正确的,但源码语义不明,也是不好的。
(4)
楼主还是换本书看吧,真心的。入门的话很多问题不必深究,先写程序跑起来,选教材最重要是作者讲述方式与你的理解方式一致。
4. 学习编程先学什么编程语言入门知乎
1. 语言只是工具,假以时日,你都会熟练掌握一门/多门语言。
2. 编程语言用以表达你对计算机的理解,表达你的想法,所以解决问题的思路及方法更为重要。
3. 进入计算机的大门,你会发现天地很广。现在多多了解,拓展视野,也很重要。
4. 推荐使用Linux,可以从Ubuntu开始。一定要熬过一开始的痛苦时期。
5. 千里之行,始于足下。1w小时定律等。
@Joker Qyou的答案很受推荐,但我觉得不大适合初学者,那张图片的"根"是:What programming language should I learn (next)?我觉得它更适合 "next"。
如果让我重来,我会选择C和(或者)Python。
Python语法和库更丰富,上手更容易,使用更方便。
C简单直接,学习成本不高,贴近底层,能帮助了解底层细节.
学习语言是简单的,语言是工具,使用好工具是一方面,其他各种领域知识也是很重要的另一些方面。高中毕业后没事刷OJ应该是蛮适合的吧,正好把算法和编程语言练好。到了大学后,如果是我重来,我会:
1. 不放过学校的基础课程。
2. 做ACM算法题,混各种OJ。
3. 使用Linux。
4. 参加各种编程方面的活动。
5. 零基础能自学c语言嘛
零基础学习C语言不困难,一年之内就可以学会。
C语言是一个实用性很强的语言,如果想要学好、学透、精通,就得下一番苦功夫。
一、要有一个正确的学习态度,明确自己学习C语言的目的,制定可行的学习计划。
二、报一个C语言培训班
在专业的老师的指导下,避免自己盲目的摸索,站在巨人的肩膀上才能快速成长。系统性的学习C语言,数据结构、算法等,形成自己的程序化思维模式。
三、加入C语言大牛的论坛、社群
现在是自媒体为王的时代,这类的大牛很多,要想成功,就要更成功的人在一起。
四、熟读C语言相关的书籍。C程序设计。还有就是C语言的作者写的,微言大义。
五、参加软件公司的实习。学习的目的一定是应用,去一家软件开发公司从基础的工作做起,参与到项目中来。
6. 初学者学习c语言哪个软件好 知乎
初学推荐VC++ 6.0这个版本的,简单上手快。
入门后就可以根据自己的情况选择高版本的了,比如VS2012 VS2013等等。
微软的VS系列还是很强大的。
7. 如何学习C语言
淘宝一些视频课程,几块钱也有,跟着视频学和写(一般VC6即可)。
如果有一些C基础,会简单的if switch while main等运用后。淘宝"51开发板",便宜的开发板不到100元,会赠送针对此开发板的视频课程和软件包。看着视频学着对开发板进行编程操作,会简单的流水灯,按键检测、动态数码管。
基本的完成后,用开发板做一个日历/时钟吧,显示当前时分秒,通过按键改变当前时间。
此时已经属于单片机C语言的小入门了,离参与工作还需要经验和C语言的熟悉深造。此时可以参与一些校园或者省、国家电子竞赛,一定要主动找老师想参加比赛。如果是大专的话部分学习可能没有参加省比赛的习惯,部分会有。
<<C语言深度解剖>>加深对C语言的理解,书的内容极少,基本就是对 指针、共同体、结构体、结构体链表等等对新手来说极少用到的知识。基本用VC6软件就可以检验和学习。推荐。
8. c语言好学吗
我感觉还行,如果你有足够的时间的话,或者你本身就是这个专业的话,C语言很快就能熟练的。不建议买国内出的书,如果英语水平太差的话,去买外国着的翻译本,如果想要精通和熟练,基本需要500页以上的书,因为他们讲的详细,最差也要选择300页以上的书,300页以下的书,都不建议购买,几乎都是缩编本,很多细节会给你省略掉,但是一般300页以上的书,都偏贵,可以到网上搜老版本的旧书的pdf。C语言方面的好书还是很多的,你可以根据你自己的选择去学,C语言是最基础的了,知乎上能搜到一大把C语言最好的教材名字。
这里推荐一本我看过的书吧,我觉得比较适合小白吧(因为我不确定是不是真的适合无基础的小白,因为我是在大学里有学过C语言的,但是大学里的书都是阉割版,所以学的一般,但是我看这本书的时候,感觉很详细,而且理解的更加透彻了,反正我感觉不难),这本书叫《C语言程序设计现代方法(第2版)》,吕秀芬 黄倩 翻译的译本,我觉得翻译的不错,挺通畅的,这本书在网上能找到pdf版本,我用的是621页的版本。
9. 为什么知乎上大多数人不推荐C语言入门
因为C语言是面向过程的语言,而现在的主流是一些面向对象的。如JAVA、C#等一些语言
10. c语言如何学习
相对于其他编程语言,C语言还是比较难的。初学者需要注意一下几点:
一是学习顺序
先从熟悉简单的C语言语法开始入门,然后再循序渐进,学习C++语法,WIN32、MFC、QT、网络编程,数据库、数据结构、算法、COM、STL等。构建一个完整的C语言知识体系。这需要一个比较漫长的学习积累的过程。语法入门部分大概2-3个月,其他部分需要学习和工作中慢慢理解和消化了。
c11.jpg
二是学习方法
人的知识80%是通过眼睛获取的,但是学习编程有所不同,除了看书、看视频之外,关键是要勤动手,勤动脑。通过做大量的练习、项目实战不断积累代码量。只有代码量足够多了,项目做的多了,才能算是真正学会了。项目能否完成,就是衡量是否学会的唯一标准。后期就是代码的质量和优化问题了,这个只能在项目工作中慢慢积累经验了。
c12.jpg
最后强调一点
很多人学不会编程是因为掉坑里了。就是教程或者书上的知识点之间跨越太大,作为一个初学者很难自己摸索出来,前面的知识点没有掌握,接着学习后面的知识,肯定是学不会了。目前绝大多数编程书籍和教程或多或少都有这样的弊端。自学能力比较强的人可以通过各种方法,参考各种网上的资料自己解决。但是大多数自学能力不是很强的人,只能依赖老师、同学、同事或者朋友帮忙指导,或者报名培训机构,老师指导完成了。
学习编程通常需要一些好的学习资料,包括纸质的书籍,视频教程,课件,项目练习,代码。零基础入门的书籍推荐《明解C语言》、《C Primer Plus》,还有一本非常特别的汇编和C语言正向逆向结合的书编程达人内部教材《汇编、C语言基础教程》也非常不错,讲解汇编和C语言的本质非常透彻,非常细致。视频资料也是特别多了,各种视频网站、论坛、自媒体都有,比如网易课堂、腾讯课堂、慕客网这些。还有一些论坛,比如CSDN、编程中国等。最重要的一点就是答疑服务,推荐爱达人的网站也很不错,从零基础入门到应用课程,配套的视频、课件、代码、项目、答疑服务都有,还可以兼职接单,学以致用。