-
Lesson 1 - 最简单的C程序
-
Lesson 2 - 打印输出
-
Lesson 3 - 循环打印
-
Lesson 4 - 判断奇偶
-
Lesson 5 - 从1加到100求和
-
Lesson 6 - 乘法表
-
Lesson 7 - 求100以内的最大素数
-
Lesson 8 - 1到100有多少个9
-
Lesson 9 - 整型转字符串
-
Lesson 10 - 约瑟夫环
-
Lesson 11 - 求两个坐标点之间的距离
-
Lesson 12 - 判断机器存储是否小尾端
-
Lesson 13 - 对不起,你的车今天限行
-
Lesson 14 - 判断地图上某点是否有出路
-
Lesson 15 - 统计一个数二进制表示中1的个数
-
Lesson 16 - 字符串拷贝
-
Lesson 17 - 统计单词个数
-
Lesson 18 - 实现 printf
-
Lesson 19 - 命令解释器
-
Lesson 20 - 预处理器实现
-
Lesson 21 - 词法分析器实现
-
Lesson 22 - 猜数游戏
-
Lesson 23 - 五子棋
-
Lesson 24 - 超链接分析器
-
Lesson 25 - cp命令实现
-
Lesson 26 - ELF文件头分析器实现
-
Lesson 27 - 简单流处理器实现和正则表达式
-
Lesson 28 - 数学计算器实现
-
Lesson 29 - 数学计算器实现more命令实现
-
Lesson 30 - sort命令实现
-
Lesson 31 - ls -l命令实现
-
Lesson 32 - Bash项目
-
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 - 地图导航项目
Lesson 40 - MyDictionary项目
项目说明
给定文本文件“dict.txt”,该文件用于存储词库。词库为“英-汉”,“汉-英”双语词典,每个单词和其解释的格式固定,如下所示:
#单词
Trans:解释1@解释2@…解释n
每个新单词由“#”开头,解释之间使用“@”隔开。一个词可能有多个解释,解释均存储在一行里,行首固定以“Trans:”开头。
下面是一个典型的例子:
#abyssinian
Trans:a. 阿比西尼亚的@n. 阿比西尼亚人;依索比亚人
该词有两个解释,一个是“a. 阿比西尼亚的”;另一个是“n. 阿比西尼亚人;依索比亚人”。
copy
- 词库文件下载 dict.txt
项目要求
1. 单词查询
要求编写程序将词库文件读取到内存中,接受用户输入的单词,在字典中查找单词,并且将解释输出到屏幕上。
用户可以反复输入,直到用户输入“exit”字典程序退出。
程序执行格式如下所示:
./mydict
默认使用 dict.txt 文本词库进行单词查找。
./mydict -f mydict.txt
表示使用文本词库 mydict.txt 文件进行单词查找。
copy
用户输入单词的前n个字母,可以作为模糊查询,提示用户匹配的单词。
2. 支持用户自添加新词/删除单词
用户添加的新词存放在指定文件中。如果待查单词在词库中找不到,则使用用户提供的词库。用户的词库使用文本形式保存,便于用户修改。
程序执行格式如下所示。
./mydict --add/del -f mydict.txt
--add/del 表示进入删除或者添加模式,-f为固定参数,用来指定用户词库文件名.
copy
3. 查询单词的词频统计
用户查询过程中,记录查询单词和查询次数,便于用户进行单词词频的统计。
程序执行格式如下所示。
./mydict --search-sort
按照查询次数从多到少依次列出用户曾经查询过的单词和查询次数。
copy
- 可以在此基础上,实现一个简单的生词记忆程序,帮助用户背记经常查询的生词*
4. 网页翻译
用户指定一个web页面的链接,程序对网页上面的正文内容进行翻译,并输出到一个文本文件中。
程序执行格式如下所示。
./mydict --translate http://www.google.com.hk/intl/en/about/
./mydict --translate http://www.kernel.org -o result.html
copy
技术参考
ncurses 库 - 实现 Linux 终端上的图形界面编程
参考资料: google "NCURSES Programming HOWTO中文版"
安装: sudo apt-get install ncurses-dev
使用: gcc your_program.c -lncurses
copy
wget 命令 - 网页抓取工具
参考资料: man wget
copy
system 调用 - 实现C程序中调用 shell 命令
参考资料: man system
copy
考察知识点
(1) 变量数据类型
(2) 数组
(3) 结构体
(4) typedef关键字的使用
(5) 控制结构
(6) 函数接口设计
(7) static关键字的使用
(8) 文件拆分与代码组织
(9) 模块化设计思想
(10) 简单的面向对象程序设计思想
(11) 指针与指针控制
(12) const关键字的使用
(13) C语言程序的命令行参数
(14) 多文件符号解析
(15) 头文件包含
(16) 宏
(17) 条件编译
(18) 字符串操作
(19) malloc函数
(20) 常用的字符串库函数
(21) 文件操作
(22) 简单的出错处理
(23) 排序算法和二分查找算法
(24) 二进制文件和文本文件的区别
(25) 链表操作
(26) 复杂链表的链表操作
(27) 二叉树
(28) makefile的使用
(29) 编程工具的使用(vi,gcc,gdb)
(30) 文档组织和项目规划
copy