Skip to content

limingth/NCCL

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

新概念C语言

NCCL - New Concept C Language

这是一门适合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 the 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 the 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 项目

Unit Three

  • 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

Unit Four

  • 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