关于学习路线的推荐,总体上,分两步学习,第一步学习编程语言(C、C++、java),第二步是学习数据结构和算法


不少初学者会选择C语言或C++作为首选,笔者这里也推荐C或C++作为入门,需要注意的是,即便C++入门,也是C风格的学习,即不需要学习面向对象部分,还没有编程基础的同学建议先学C语言教程C++教程


1 从Hello, World!开始学习输入输出

切记一定要刷题再往后学,没错,你没有看错,学了HelloWorld就可以做题,如1001题,我打赌你可能不会一次就通过!


2 变量与运算

了解变量定义,赋值,接收等操作,算数、关系、逻辑运算符等,从而可以实现各种数学运算,公式的计算等等

再看到任何数学公式类的问题都可以轻易解决。


3 分支、循环流程控制

学习switch、if else、while、do while、for等选择分支和循环结构,从而可以随意控制程序的走向。尤其可以灵活使用循环套循环,循环和选择结构嵌套组合的情形,应对复杂的问题处理。学到此,就几乎解锁了绝大部分的题目,建议学习完之后停留,预留大量的时间进行大量的刷题巩固


4 数组与结构体

数组的掌握可以让你更从容的处理更多的数据,尤其字符类型的数组,是绝大多数字符串问题解决的根本,这里尤其重点掌握,尤其掌握字符串(一维数组)、多个字符串(二维数组)的使用,及常用字符串函数的使用,这些可以让你轻松解决各种字符串问题,以及更方便的处理复杂问题。C语言学习同学要熟练学习string.h头文件下的str打头的各种字符串处理函数;对于C++学习的同学,则需要熟悉string类的常用方法,这些会让你如虎添翼。

同时,这里就可以学习冒泡、快速排序等基本排序算法了

结构体亦是如此,它和指针的将会是后面各种数据结构(链式结构、树等等)组成的基本。


5 函数与递归

函数定义、调用、返回值的使用是必须的。除此之外,调用本身就会产生新的算法,即递归



6.其他

笔者这里建议大家其他的知识,如宏定义、枚举以及一些语言特性,不需要专门的学习,通过刷题、敲代码的过程中需要什么学什么即可。


大家可以发现,在大致的语法学习过程中,我们就会不自觉的接触常用的算法和数据结构,比如排序算法、递归算法,简单的模拟、遍历的算法。数组这种顺序结构,用数组存储部分结果,以空间换时间等思想就会慢慢积攒下来,这都是刷题的结果。因此极力的建议大家不要太着急学习高级的算法和数据结构,因为没有前面介绍的那些东西做基础,以及没有足够的刷题量,许多算法和数据结构的思想你很难理解消化。反而会拉长时间。

别忘了,你面对的是上机编码解决问题的竞赛!

点赞(1)

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

Dotcpp在线编译      (登录可减少运行等待时间)