ZAYOO个人站 www.zayoo.org

1-猜数游戏 源代码
名称:猜数终极版
介绍:本程序采用二进制方法取代数组标志方法,采用unsigned long int保存所有中间变量,运行速度快,占用空间小,最大支持约40亿,可自动计算所需卡片数,且能够防止错误输入和重复输入。
原理:unsigned long int为32位长整型,可存放32个二进制标志,因此可支持32张卡片,支持1-4294967296范围的猜数。用户输入猜数范围后,采用二进制右移方法计算所需卡片数。每次循环先采用长整型循环与二进制位标志变量比较产生卡片,根据用户输入判断所选数字是否在当前卡片上,若在当前卡片上则将上一轮结果与二进制位标志变量进行按位或运算,然后进入下一轮循环。循环结束后无需进行任何运算,计算机可以自动将二进制结果转化为十进制输出。程序中采用字符型变量接收数据,进行合法性判断,并采用清除缓冲区方法防止重复输入。
基本方案
1、卡片由计算机自动生成。
2、用户输入1/0或y/n表示所选数字是否在当前卡片中。
技术要点
左移运算符 << 右移运算符 >>
按位与 & 按位或 |
程序暂停(显示Press any key to continue...) system("pause");
清空输入缓冲区 fflush(stdin);
讨论:本程序已达到40亿级的规模,是数组方法远远不能实现的,已无扩充必要(扩充需用长整数组或长整链表并需涉及高精度运算)。某些程序采用pow实现乘方,其效率很低(因涉及double类型),使用2的自乘也不如二进制左移方便和高效。本程序甚至没有使用乘法,仅使用自增循环和二进制操作及实现了全部功能。

2-扑克牌排序
源代码
支持离散双变长字符串排序,可通过修改排序规则实现不同的排序功能。(可能有BUG)

3-统计一个字符串中字母,数字,汉字,单词的个数
超长字符串支持 完美支持中文及空格
逐字节读取判断,中文判据双字节ASCII码均大于0xa0,非英文均认为单词结束。
源代码

4-求几个字符串的最长公共子串
原版 原版中文支持
A版 A版中文支持
B版 B版中文支持
C版 C版中文支持

©ZAYOO 2008
zayoo@126.com