# NCCL **Repository Path**: ouyangpengdev/NCCL ## Basic Information - **Project Name**: NCCL - **Description**: New Concept C Language - **Primary Language**: C - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-03-23 - **Last Updated**: 2021-03-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 新概念C语言 ============================= ## NCCL - New Concept C Language 这是一门适合C语言零基础,但对C编程有强烈兴趣,想探求其奥秘和精髓的学员阅读学习的课程。 起名为《新概念C语言》是希望借鉴《新概念英语》教材的写法,不着重强调语法和词汇(知识点),而是以范文和场景(应用)来构建课程(Lesson)。 全书分为 4个 Unit,每个 Unit 包含 24 个 Lesson,一共 96 个 Lesson。 其中每个 Lesson 对应一段可编译执行的典型代码,解决一个有趣的计算机问题,例如约瑟夫环。 这些代码范例的编写,作者将力求做到句法经典,内涵丰富,适合初学者模仿和扩展。 全书内容大纲如下: * [Unit 1 : C Foundmentals](https://github.com/limingth/NCCL/blob/master/Unit-1/README.md) 覆盖基本的C语法结构--包括变量,表达式,语句,函数,数组,结构体,位操作,指针等,学会使用状态机思想编程。 * [Unit 2 : C Essentials](https://github.com/limingth/NCCL/blob/master/Unit-2/README.md) 覆盖常用的库函数、数据结构和算法--包括单向/循环链表,栈,队列,二叉树,堆和散列表等,掌握常用的排序查找算法和问题求解算法,学会使用递归思想编程,能够解决迷宫问题、表达式求值问题、最短路径问题等。 * Unit 3 : C Classicals 覆盖经典的计算机问题解法--包括在各个计算机细分领域中经典的入门问题,例如压缩算法,网络协议栈,语法分析器等。 * Unit 4 : C Compiler 用C语言实现一个类C语言的编译器,最后能够编译生成 ARM 开发板上的二进制驱动程序。 (作者注: 目前 Unit 3/4 仍在规划中,希望能够有更多优秀的老师参与编写,请和我联系。) ## [Unit One](https://github.com/limingth/NCCL/blob/master/Unit-1/README.md) * 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 简单搜索引擎 ## [Unit Two](https://github.com/limingth/NCCL/blob/master/Unit-2/README.md) * 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