这是一门适合C语言零基础,但对C编程有强烈兴趣,想探求其奥秘和精髓的学员阅读学习的课程。
起名为《新概念C语言》是希望借鉴《新概念英语》教材的写法,不着重强调语法和词汇(知识点),而是以范文和场景(应用)来构建课程(Lesson)。
全书分为 4个 Unit,每个 Unit 包含 24 个 Lesson,一共 96 个 Lesson。
其中每个 Lesson 对应一段可编译执行的典型代码,解决一个有趣的计算机问题,例如约瑟夫环。
这些代码范例的编写,作者将力求做到句法经典,内涵丰富,适合初学者模仿和扩展。
全书内容大纲如下:
-
Unit 1 : C Foundmentals
覆盖基本的C语法结构--包括变量,表达式,语句,函数,数组,结构体,位操作,指针等,学会使用状态机**编程。 -
Unit 2 : C Essentials
覆盖常用的库函数、数据结构和算法--包括单向/循环链表,栈,队列,二叉树,堆和散列表等,掌握常用的排序查找算法和问题求解算法,学会使用递归**编程,能够解决迷宫问题、表达式求值问题、最短路径问题等。 -
Unit 3 : C Classicals
覆盖经典的计算机问题解法--包括在各个计算机细分领域中经典的入门问题,例如压缩算法,网络协议栈,语法分析器等。 -
Unit 4 : C Compiler
用C语言实现一个类C语言的编译器,最后能够编译生成 ARM 开发板上的二进制驱动程序。
(作者注: 目前 Unit 3/4 仍在规划中,希望能够有更多优秀的老师参与编写,请和我联系。)
- Lesson 1 - What is a simplest C program? 最简单的C程序
- Lesson 2 - Let's say hello to world 打印输出
- Lesson 3 - Count how many fingers do you have? 循环打印
- Lesson 4 - Judge a number odd or even 判断奇偶
- Lesson 5 - Summarize all numbers from 1 to 100 从1加到100求和
- Lesson 6 - Print 9*9 multiplication table 乘法表
- Lesson 7 - Find a max prime number within 100 求100以内的最大素数
- Lesson 8 - Find 9 in number 1 to 100 1到100有多少个9
- Lesson 9 - Convert a number to a string 整型转字符串
- Lesson 10 - Josephus ring 约瑟夫环
- Lesson 11 - Calculate the distance between 2 points 求两个坐标点之间的距离
- Lesson 12 - Does your machine use little-endian? 判断机器存储是否小尾端
- Lesson 13 - Sorry, your car is restricted today 对不起,你的车今天限行
- Lesson 14 - Is there a way out? 判断地图上某点是否有出路
- Lesson 15 - Count bit 1 in a number 统计一个数二进制表示中1的个数
- Lesson 16 - How to strcpy 字符串拷贝
- Lesson 17 - Count words in an artitle 统计单词个数
- Lesson 18 - My printf 实现 printf
- Lesson 19 - Shell command parser 命令解释器
- Lesson 20 - Preprocessor 预处理器实现
- Lesson 21 - Lexical analysis 词法分析器实现
- Lesson 22 - Guess what number in my hand 猜数游戏
- Lesson 23 - Five-Chess game 五子棋大战
- Lesson 24 - Build a simple Search Engenine 简单搜索引擎
- Lesson 25 - mycp (cp命令实现)
- Lesson 26 - ELF Header Parser (ELF文件头分析器实现)
- Lesson 27 - sed simple (简单流处理器实现和正则表达式)
- Lesson 28 - math calculator (数学计算器实现)
- Lesson 29 - more command (more命令实现)
- Lesson 30 - sort (sort命令实现)
- Lesson 31 - ll (ls -l命令实现)
- Lesson 32 - MyBash 项目
- Lesson 33 - 动态数组实现
- Lesson 34 - 约瑟夫环问题
- Lesson 35 - 表达式求值问题
- Lesson 36 - 广度优先解决迷宫问题
- Lesson 37 - 词频统计器
- Lesson 38 - 堆排序问题
- Lesson 39 - 构造符号表
- Lesson 40 - MyDictionary 项目
- Lesson 41 - BSearch 实现
- Lesson 42 - QSort 实现
- Lesson 43 - 深度优先解决迷宫问题
- Lesson 44 - KMP 算法实现
- Lesson 45 - 最长公共子序列(LCS)问题
- Lesson 46 - Dijkstra 算法
- Lesson 47 - Huffman Coding 算法
- Lesson 48 - MyGPS 项目
- Lesson 49
- Lesson 50
- Lesson 51
- Lesson 52
- Lesson 53
- Lesson 54
- Lesson 55
- Lesson 56
- Lesson 57
- Lesson 58
- Lesson 59
- Lesson 60
- Lesson 61
- Lesson 62
- Lesson 63
- Lesson 64
- Lesson 65
- Lesson 66
- Lesson 67
- Lesson 68
- Lesson 69
- Lesson 70
- Lesson 71
- Lesson 72
- Lesson 73
- Lesson 74
- Lesson 75
- Lesson 76
- Lesson 77
- Lesson 78
- Lesson 79
- Lesson 80
- Lesson 81
- Lesson 82
- Lesson 83
- Lesson 84
- Lesson 85
- Lesson 86
- Lesson 87
- Lesson 88
- Lesson 89
- Lesson 90
- Lesson 91
- Lesson 92
- Lesson 93
- Lesson 94
- Lesson 95
- Lesson 96