要解决的几个C问题
1. Maze 问题. 给你一个Maze的地图然后实现从任一点开始走到出口.将其路径打印出来.
2. 八皇后问题. 任意两个皇后都不可以同行、同列、同对角线.
3. 大数相乘。//最后试一试对任一大数的阶乘打印出来(其实不是很难)。
4. 编写一个计算器。功能简介:只要任意的输入一个表达式即可以完成计算。(需要考虑好出错情况)。// 已经完成,还有过好没有包含进去。
5. 编写一个图书馆借书系统。(已完成,考虑用VC完成);
功能简介:要求建立也很多书的型数据库(即用文件存储)。第一次将从键盘上读入。以后,都将从文件中读入。
要求有:username, password.一般用户功能:1. 可以修改密码. 2. 修改用户名. 3. 显示已借的书.4. 还可以借几本. 5. 搜索.
另建一个图书馆管理员.一切的用户名皆由其控制.
6.编一个下拉式的菜单. // 估计要参考<计算机图形学>
7. 编一个小软件要求:可以从一台计算机传输”信息” 到另一台中去.(可以先考虑在本机器上实行.最后传输文件到另一台).//
8. 俄罗斯方块.
9. 一个随机函数.(可以考虑多重的方法).//在VC中有一个很常用的函数可以解决。在turbo c 中也有(round( ));
10. 一个猜数字的游戏.(已经完成,考虑它的界面的问题)
11. 一个很简单的Dos下的解码和压缩。(对Win RAR的一个简单的模拟)。//开始一直不敢做,觉得自己的能力还不到,又没有好好的看文档。尝试之后,发现自己也是可以完成的。原来一切都不想自己想象的那么难。
12.在C中实现对文件的查找、搜索。(类似与Window下的搜索)。
//编程的一些算法
计算器:
需要解决的问题
:
1. 输入问题, 考虑好怎样输入,输入的存储结构.
1. 输入问题, 考虑好怎样输入,输入的存储结构.
2. 对浮点型的扫描. 数与法则的分开.
3. 对栈的实现过程.
Windows编程的一些想法
1.可以考虑想想学习 C# (屏蔽了指针的麻烦及复杂程度更利于程序员对软件的开发.以及C#中丰富的类库).学完之后可以考虑做这样一件事情: 编写一个智能体,其中包含了发帖人的昵称, 发帖时间, 阅读次数, 附件.Etc.然后让其模仿一个帐号去登录服务器实行翻页功能并将其数据库下载到我的机器上来.这样, 我就会的一个BBS的论坛源代码.然后, 我就可以在我的机器上实现搜索。
2.我可以考虑怎样去实现对Windows情况下对文件夹及文件的搜索(据说有相应的Win API 函数).如果是在Linux & Unix 环境中实现呢?(这个实现应该有相应的命令,有的话那么是什么命令呢?没有怎么办?了解Linux & Unix 情况下是怎样的实现文件及文件的存储的呢?).PS:**注意以上的问题前体是:我在用某种语言实现的条件下(如:C / C++)具体是怎样实现的呢?
3.阿平提出的问题:
LZW算法
在LZW算法中使用的术语与LZ78使用的相同,仅增加了一个术语—前缀根(Root),它是由单个字符串组成的缀-符串(String)。在编码原理上,LZW与LZ78相比有如下差别:
① LZW只输出代表词典中的缀-符串(String)的码字(code word)。这就意味在开始时词典不能是空的,它必须包含可能在字符流出现中的所有单个字符,即前缀根(Root)。
②由于所有可能出现的单个字符都事先包含在词典中,每个编码步骤开始时都使用一字符前缀(one-character prefix),因此在词典中搜索的第1个缀-符串有两个字符。
LZW编码是围绕称为词典的转换表来完成的。这张转换表用来存放称为前缀(Prefix)的字符序列,并且为每个表项分配一个码字(Code word),或者叫做序号。这张转换表实际上是把8位ASCII字符集进行扩充,增加的符号用来表示在文本或图像中出现的可变长度ASCII字符串。扩充后的代码可用9位、10位、11位、12位甚至更多的位来表示。Welch的论文中用了12位,12位可以有4096个不同的12位代码,这就是说,转换表有4096个表项,其中256个表项用来存放已定义的字符,剩下3840个表项用来存放前缀(Prefix)。
LZW编码算法的具体执行步骤如下:
步骤1:开始时的词典包含所有可能的根(Root),而当前前缀P是空的;
步骤2:当前字符(C) :=字符流中的下一个字符;
步骤3:判断缀-符串P+C是否在词典中
(1) 如果“是”:P := P+C // (用C扩展P) ;
(2) 如果“否”
①把代表当前前缀P的码字输出到码字流 ;
②把缀-符串P+C添加到词典 ;
③令P := C //(现在的P仅包含一个字符C);
(1) 如果“是”:P := P+C // (用C扩展P) ;
(2) 如果“否”
①把代表当前前缀P的码字输出到码字流 ;
②把缀-符串P+C添加到词典 ;
③令P := C //(现在的P仅包含一个字符C);
步骤4:判断码字流中是否还有码字要译
(1) 如果“是”,就返回到步骤2;
(2) 如果“否”
①把代表当前前缀P的码字输出到码字流 ;
②结束。
(1) 如果“是”,就返回到步骤2;
(2) 如果“否”
①把代表当前前缀P的码字输出到码字流 ;
②结束。
位置 1 2 3 4 5 6 7 8 9
字符 A B B A B A B A C
步骤 位置 词典 输出
(1) A
(2) B
(3) C
1 1 (4)A B (1)
2 2 (5)B B (2)
3 3 (6) B A (2)
4 4 (7)A B A (4)
5 6 (8)A B A C (7)
6 -- -- -- (3)
LZW译码算法
LZW译码算法中还用到另外两个术语:①当前码字(Current code word):指当前正在处理的码字,用cW表示,用string.cW表示当前缀-符串;②先前码字(Previous code word):指先于当前码字的码字,用pW表示,用string.pW表示先前缀-符串。
LZW译码算法开始时,译码词典与编码词典相同,它包含所有可能的前缀根(roots)。LZW算法在译码过程中会记住先前码字(pW),从码字流中读当前码字(cW)之后输出当前缀-符串string.cW,然后把用string.cW的第一个字符扩展的先前缀-符串string.pW添加到词典中。
LZW译码算法的具体执行步骤如下:
步骤1:在开始译码时词典包含所有可能的前缀根(Root)。
步骤2: cW :=码字流中的第一个码字。
步骤3:输出当前缀-符串string.cW到码字流。
步骤4:先前码字pW := 当前码字cW。
步骤5:当前码字cW := 码字流中的下一个码字。
步骤6:判断先前缀-符串string.pW是否在词典中
(1) 如果“是”,则:
①把先前缀-符串string.pW输出到字符流。
②当前前缀P :=先前缀-符串string.pW。
③当前字符C :=当前前缀-符串string.cW的第一个字符。
④把缀-符串P+C添加到词典。
(2) 如果“否”,则:
①当前前缀P :=先前缀-符串string.pW。
②当前字符C :=当前缀-符串string.cW的第一个字符。
③输出缀-符串P+C到字符流,然后把它添加到词典中。
(1) 如果“是”,则:
①把先前缀-符串string.pW输出到字符流。
②当前前缀P :=先前缀-符串string.pW。
③当前字符C :=当前前缀-符串string.cW的第一个字符。
④把缀-符串P+C添加到词典。
(2) 如果“否”,则:
①当前前缀P :=先前缀-符串string.pW。
②当前字符C :=当前缀-符串string.cW的第一个字符。
③输出缀-符串P+C到字符流,然后把它添加到词典中。
步骤7:判断码字流中是否还有码字要译
(1) 如果“是”,就返回到步骤4。
(2) 如果“否”, 结束。
(1) 如果“是”,就返回到步骤4。
(2) 如果“否”, 结束。
例: (1) (2) (2) (4) (7) (3)
步骤 代码 词典 输出
(1) A
(2) B
(3) C
1 (1) -- -- A
2 (2) (4) A B B
3 (2) (5) B B B
4 (4) (6) B A A B
5 (7) (7) A B A A B A (由于(7)不在目前的字曲中,故
6 (3) (8) A B A C C 使用(4)所产生的字典:AB?,即
(7)的第一个字母是A,产生
(4)
所生成的字典的最后一个字母是A)
所生成的字典的最后一个字母是A)
///
C library
图书管理系统设计
运行程序时
1. 弹出一个登陆(属于一个消息框):包括一个下拉框(可以选择:1。普通用户。 2。图书管理员)。一个登陆的用户名:(用来输入用户名,如果为管理员则使用默认的名字am);
2. 可以考虑在这过程之中有背景音乐。
3. 登陆之后分成两个界面。分别为:
a. 管理员:窗口设置为淡红色的背景正中央打印“Welcome your coming!--- our administer”.(可以考虑背景可以自己设置类似始于Windows的桌面)。菜单:管理员(/管理员信息/更改管理员信息/退出/)登陆(作用:重新弹出登陆框,回到程序开始运行的状态。)搜索(书的搜索/用户的搜索/)。用户(用户的信息/更改用户)帮助(弹出版本号)。
b. 普通用户:窗口设置为淡蓝色的背景正中央打印 “welcome your coming! ---- our user”(可以考虑背景可以自己设置类似始于Windows的桌面). 菜单:用户(/用户信息/更改用户信息/退出/)登陆(作用:重新弹出登陆框,回到程序开始运行的状态。)搜索(搜索数据库中的书)。帮助(弹出版本号)。