
前言,因为很多小伙伴都在向我询问 C语言 学习方面的问题,就整理一个文章一起解答,我个人认为学枯燥的内容就需要能看到有趣的阶段性成果以及提前规划好路线才能长久学下去,所以本文我仅仅作为过来人简单分享分享我的一些经验和提升兴趣的方法。 [先放几个我的有意思的小程序~]


开头先总结下精华推荐,防止重要的没看着qwq。 一个视频 + 两本书 + 一个专栏

MOOC北京大学 郭炜老师系列视频

啊哈系列入门(无脑推)

浙江大学童晶老师的专栏看完直接乱杀
很多萌新学习都会有下面问题,其实很常见,有问题说明你思考过现状,看到这也说明你在寻求解决,学技术可能都要经过这样一个过程,下面问题也大致对应文章内容。
不知道怎么去入门?参考路线、多问参考[1][2]
学完语法不知道去干什么?多看别人能干什么尝试自己去练练手参考[2][3][4]
学完了感觉啥也不会?多去练习,不然键盘跟不上思维参考[2][3][4.3]
不清楚自己该学什么,以后学什么?早点规划学习路线,多去知乎看类似问题,但找学校厉害的学长交流更靠谱
C语言有什么用,学完干啥,好像跟着学校学也没学明白?跟着学校的步伐等考完研就有跟多时间去思考这个问题了[开玩笑],计算机入门是C,但发展是星辰大海,关键是你学完C有没有去学习课外内容,这个问题你意识的越早解决越好,多去问,往往是你了解的信息太少了,答案往往取决于你的行动。
好了正文开始,码字不易,求点个赞支持支持~
这个阶段应该搞清楚自己要学什么,学了这些能做什么。找准方向,而不是盲目学,或者干脆等老师来讲。
⭐⭐⭐⭐入门必看,能动手写代码就别看了(别全看完,一定要动手,一定要思考)
⭐⭐⭐⭐进阶选择 北京大学 - 郭炜老师 强烈推荐看看(这个视频推荐全部看完)

https://www.icourse163.org/u/mooc1456736596782?userId=1015101381#/home/course
⭐⭐⭐⭐⭐写给小白的基础入门书,简单程度可想而知,无脑推荐
整本书形象的带你学完C语言基础语法,不涉及很深,最后以一个走迷宫案例结尾,留下一个推箱子的游戏实现给读者,是我最推荐的入门书。

这里建议不想折腾配置环境的同学/打竞赛的同学 ==> 使用dev(配套翁凯课程)
有经验能折腾的同学 ==> vscode(配置复杂,但又不仅仅能跑C且轻量)
进行规范项目开发 ==> vs/clion(集成环境、程序较大)
你周围同学老师推荐用什么就用什么
参考课本后面的练习习题,自己编写代码运行
https://pintia.cn/problem-sets/12/problems/type/7
达到不看答案,自己能全部写出来,就可以进阶了~
这里如何看到自己进步很简单: 你把课后习题(找闰年呀,比较大小啊,计算水电费)拿给中小学生他们都能写 但你拿C写不了,这就是没进步,课后习题都是简单的逻辑题,当你的C语言能力能赶上中小学生逻辑那么这就是进步。[比喻有点抽象,哈哈]
哔哩哔哩 - b站大学可不是浪得虚名的
CSDN - 国内大多数小白程序员的起点
Github/gitee - 找项目、开源就上github
同时答应我别在CSDN开源好吗
一个月保证自己学完指针前面的语法
遇到 bug 能靠自己努力的解决
基础的题都能实现。例如 水仙花数,最大公约数,鸡兔同笼 这类基础问题
遇到基础编程题,如果你的手能跟上你的大脑逻辑,就能进入下一个阶段啦
这里可以和上面同时进行,学的时候去看看别人能用你学的东西干什么(以下仅仅作为新手练手参考,提高兴趣,并不代表C语言只能干这些),当你学完语法后就能去尝试自己去仿照。
C语言字符画
小白看热闹系统,推荐学学

随机生成迷宫 + 自动寻路算法可视化
随便找的教程0.0,此处需要学习算法


我自己写的爱心 + 自动迷宫
整人系列
有的代码一生只能用一次 定时关机、屏幕融化、鼠标反向等(就不提供全部作案教程了,哈哈哈)

表白系列
爱心、烟花、流星、圣诞树代码 我都有了,但小姐姐呢?

开源项目
不妨将你的项目开源到github上面试试,也可以提前接触git~

https://github.com/404name/winter
C/C++ 聊天室项目
《聊天软件之从干翻腾讯到我是废物》

C语言人机五子棋
暂无参考,可以自己思考实现
C语言模拟系列
看了也不会系列[自我推销]



最简代码系列游戏
教程很棒,几十行高能还原成百上千行的游戏系列。


走到这个阶段,大概只需要一个月,别拖太久,基础语法学完就动手
不管你打不打acm,第一门语言的语法一定要扎实,后面学习其他语言也只要学完语法就可以上手了,特性在实践中学习。
PTA 基础训练 100题(按照通过率写30道左右就行)
肝帝建议多刷50左右,代码控制能力直接起飞,然后转牛客、洛谷、力扣。

https://pintia.cn/problem-sets/994805260223102976/problems/type/7
学到一定程度如何检验自己能力呢?写个小项目吧。
一个程序是不是自己的在于能不能加入自己的元素,要不达到100%复刻、要不加入自己的理解修改内容,如果跟着教程写出一个一模一样的游戏,不能代表你学会了。这个道理到后面写大课设,程序设计都同理。
提供参考方向(大致由易到难):
学习程度只要语法到达指针前就行,指针只是简化程序的,但非基础必要,别花时间卡死在这,先动手做起来。
浙江大学 童晶老师游戏专栏
⭐ ⭐ ⭐ ⭐ ⭐强烈推荐
如果你语法扎实,学完这个专栏,用自己逻辑写个五子棋、象棋都不用看视频教程。 这个教程是我当时的起点,也是兴趣动力的来源

https://zhuanlan.zhihu.com/p/338345175

知乎搜 “做游戏,学编程” 专栏
EasyX图形库学习
⭐ ⭐ ⭐ ⭐ 建议学一手,美化界面,但也要清楚做图形界面也需要美感,暂无资源推荐,因为我没学0.0
看书变强大吧~
这个阶段已经接触了C语言顶层了,也大概清楚C语言语法和能做一点简单的项目了。这时候需要巩固基础,去提高代码效率,提高代码质量
从 指针 起手,去搞清楚C语言内存是什么个东西,去学习语法规范、命名规范让自己的代码更优雅~
这里我就推荐《啊哈算法》了,下面这个广告已经够形象了,不管你是大佬还是小白,这本书足够你起飞了。
算法是什么?
它类似文言文,可以一句胜千言,优化你的表达,同时也更难理解。
它也类似词语古诗,可以提高你讲话的艺术,表达出很多正常语句难以表达的内容。
学了能干啥?
打比赛、获奖、保研、走向人生巅峰。

这时候可以搬出你们老师/学长推荐的黑皮书(CprimerPlus)慢慢看了
往后学吧,具体学啥,找学长问、找博主问、找自己问。
但不是继续学C了,很多同学大一上学完C就想着自己好不容易学了半年的C终于能大展身手了,但自己能做的很少就认为自己没学好就又花了一个学期去学,越学发现好像能干的确实不多,就浪费了时间,而其他小伙伴要不会写网页了,要不竞赛拿奖了,而你C虽然看似学的更好了,但其实你方向错了。
C语言学完一学期、期末拿出一个成果就不要停留了
我给以下几个建议。
往后去学面向对象,C++、Java都行,但不是学语法,如果你还花10多个小时去看完那些面向完全没学过编程的小白的C++、java语法视频,那你又成功浪费了时间。这时候应该带着思考去学,为什么C++,java就是面向过程的,懂的语法视频直接跳,直接去看后面怎么创建类对象,怎么交互。
参加ACM参加实验室,学习算法,这条路就自然有人给你规划好,大三还没有成绩就跑路吧,有成绩就躺着等保研/进大厂吧。
学习网络/操作系统(计算机组成),其实这两个等上课讲就没自学有意思了,你自己去探索输入baidu.com到显示网页、操作系统怎么把你输入的内容响应去和百度服务器建立链接、网络传输怎么保证安全,先看科普视频再看专业视频。这里搞清楚了你的技能树就扩散了,你发现再学其他技能好像你可以直接点亮,操作系统的思想在各种语言里面也都有类似思想体现。这时候你就清楚了C语言、java语言能干啥了:操作系统是系统自带的黑盒,而编程语言是给编程人员去操作操作系统的,你学了语法也许什么都干不了,黑盒完全是黑的,当你理解计算机体系时,了解了黑盒能做什么时,C语言又什么都能做。
提前卷后续的教学课程加入保研大军
总的来说这个阶段应该向前看了,C语言是你计算机之旅的起点和伙伴,一个月入门语法,到半年熟悉它就足够了,这时候重要的是认识C语言的过程和收获,尽早往前看,困惑会越来越少,同时路上还有很多朋友(python、java、go、php..)和风景(数据结构、计算机组成...)等待着你。不要停留,go ahead!
看完专栏还是不知道干啥?那就看看科普视频吧~

C语言是大多数萌新程序员入门的第一语言,要学好C,首先要先清楚几个误区
别把重心全部放到理论课上,多花时间实践,理论学好走的远,但先确保你能上路
提前把C语言语法学完,别跟着老师步伐,除非你有把握你们老师不仅仅是为了让你过期末
没笔记本电脑尽快买, 特殊情况去机房或者用手机编译器
学C语言就像讲话,不是你会语法就会讲了,关键在于你去想办法讲的更好,更优美
入门学习切勿从底层开始,非 985/211 理解能力别黑皮书起步,也别死扣教科书。要自顶向下,先用上C语言,看到成果,再向下去探究底层。
代码能力:通过大量代码训练熟悉C语言语法,让你的键盘能跟上你的大脑逻辑。【如果你逻辑能解决一个问题,但写不出来,那就去下面1.33.1 提升吧】
debug能力:出bug在所难免。跟讲话一样,不是每个人都能讲出优美的中国话,即使是喷子也需要大量练习去修正才能让它的语言更具有力量;debug能力一样,大胆去写,出了问题去修正,一来提升找bug能力,二来规范你的代码减少出bug次数。
检索信息能力:拉开人与人之间差距的,从长远来看,既是学习能力的差距,也是获取信息能力的差距。学计算机最重要的就是要学会拓宽自己的信息获取渠道,灵活应用百度,b站,github,能让你的各方面能力快速提升。如何提升自己,就是不断的获取新信息,来修正自己的路线选择。这里强烈建议去找找视频看看。这里不展开细讲。
自律能力:自律不是约束,就是正常执行完你一天该做的事情,而不是把时间花在一块事情上面。如果你家里面有矿、有公司,能说走就走的旅行,那么请忽略。
交流能力:一个人走的快,一群人走的远,多去交流,多提问,永远保持好奇~你的信息获取往往更多的也是从同届或者学长学姐交流中获取。