博文
迷宫搜索(2007-06-15 09:14:00)
摘要:/************************************************************************\
迷宫路径搜索的过程显示,编译环境 : TC
Author : Deng Lanzhong / 江南孤峰
Time : 07--6--14
Link me : Email: lingdlz@163.com qq: 403324669
\************************************************************************/
#include <stdio.h>
#include <graphics.h>
#include <time.h>
#include <setjmp.h>
#define MAZE_X 15 /* 迷宫宽度 */
#define MAZE_Y 10 /* 迷宫高度 */
char maze[MAZE_Y+2][MAZE_X+2]; /* 定义迷宫 */
int maze_x_s = (640 - MAZE_X * 20) / 2; /* 迷宫起始横坐标 */
int maze_y_s = (480 - MAZE_Y * 20)/2-40; /* 迷宫起始纵坐标 */
int search_result = 1; /* 迷宫搜索结果 */
jmp_buf jumper; /* 非局部跳转 */
/* 创建随机迷宫 */
void Crea......
打印杨辉三角(2007-06-02 12:26:00)
摘要:问题描述
还记得中学时候学过的杨辉三角吗?具体的定义这里不再描述,你可以参考以下的图形:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
输入
输入数据包含多个测试实例,每个测试实例的输入只包含一个正整数n(1<=n<=30),表示将要输出的
杨辉三角的层数。
输出
对应于每一个输入,请输出相应层数的杨辉三角,每一层的整数之间用一个空格隔开,每一个杨辉三角后
面加一个空行。
输入样例
2 3
输出样例
1
1 1
1
1 1
1 2 1
#include <stdio.h>
#include <string.h>
int main(){
int n,a[32],b[32],i,j;
while(scanf("%d",&n)!=EOF){
a[1] = a[2] = b[1] = b[2] = 1;
printf("1\n");
for(i = 2; i <= n; i++){
printf("1 ");
for(j = 2; j < i; j++){
b[j] = a[j-1]+a[j];
printf("%d ",b[j]);
}
b[j] = 1;
memcpy(a,b,sizeof(int)*(n+2));
printf("1\n");
}
printf("\n");
}
return 0;
}
......
具有破坏性的C程序(2007-03-28 11:41:00)
摘要:论坛上一网友出的,原帖:
请问大家如何编一个一发现D盘的exe文件就自动删除的程序??做这个东西不是为了破坏,而是为了学校机房的安全,不让学生在下面搞破坏,本人对编程一无所知,哪位好心人士能提供代码或者程序.谢谢
/* 自己以前写过类似的程序,所以发了十几分钟写了个基本上满足LZ
需要的程序.但是真正用于机房还差点,首先应该有个计时器,隔段
时间扫描一遍D盘而不是不停的扫描,其次应该驻留在内存自动运行
而不是放在谁都可以关闭它的地方。不过要我实现所有的这些功能
呵呵…… 总要意思一下吧 !
运行该程序D盘下的所有系统文件,系统目录以及隐藏文件,隐藏目录
只读文件,只读目录会被修改。
注意请在调试时创建临时目录,否则如果D盘下的所有.exe文件被删
除与作者无关 ,使用该程序造成的一切损失与作者无关 。
正常退出该程序请输入 e
编译环境 VC++6.0
*/
#include <stdio.h>
#include <io.h>
#include <string.h>
#include <direct.h>
#include <conio.h>
#include <stdlib.h>
#define FILE_ATTRIBUTE_DIRECTORY 0x00000010
#define FILE_ATTRIBUTE_FILE 0x00000020
void  ......
有趣的数阵(2007-03-27 19:58:00)
摘要:编程爱好者 论坛上某个网友出的,原帖如下:
请大家帮我仔细的提示一下这个回路的题目怎么做?怎样打出如下图案:
1 2 3 4 5 6
14 15 16 17 18 7
13 12 11 10 9 8
解题思路:很容易的我们发现这个数阵很有规律,假如我们有一个二维数组
a[i][j],如果我们能把这些数按上面那样填进数组输出就不成问
题了,我们发现第一行依次向右增加(从1开始),我们设个变量k
首先设 k = 1,k按1增长填进数组,数组下标的规律是首先 j++;然后
方向 变为向下即 i ++; 之后方向向左,即 i --, j --;随后向上即
i --;最后又回到出发的方向,向右 ^_^.如果填数的过程中我们知道
什么时候该向哪个方向走就好了,为了实现这个目的,我们可以将数组
初始化为 0 ,并且在外围增加一层墙(设值为 1),遇到墙我们就回退
因为我们知道方向变化的规律,我们按这个......
求子集(2007-03-20 11:25:00)
摘要:/***********************************************************************************\
功 能: 求整数集合的子集
输入说明: 按提示输入数据
输出说明: 以集合形式输出子集
测试数据如下:
Enter the number of gather:4
Enter gather's each element:
1 2 3 4
The sub gather as followed:
{}
{1}
{2}
{3}
{4}
{2,1}
{3,1}
{4,1}
{3,2}
{4,2}
{4,3}
{3,2,1}
{4,2,1}
{4,3,1}
{4,3,2}
{4,3,2,1}
Press any key to continue
算法说明: 对子集的寻找按照子集元素个数递增方式,用堆栈
语 言: 非标准 C 编译环境:VC ++ 6.0
Author : 江南孤峰 Time :2006--11--29
独学而无友,则孤陋而寡闻 编程爱好者群 : 28011342
\***......
表达式检验(2007-03-20 11:16:00)
摘要:
/***********************************************************************************\
功 能: 检验含括号的四则运算表达式的合法性
输入说明: 按提示输入表达式 ctrl+c 结束输入
输出说明: 如果表达式合法则输出 yes ,否则输出 no
测试数据如下:
press Ctrl+c to exit !
(((3+4*3+(333+4)+(33*34))/3)+4)
yes
press Ctrl+c to exit !
()
no
press Ctrl+c to exit !
3+4-(3*3)
yes
press Ctrl+c to exit !
8((
no
press Ctrl+c to exit !
8()
no
press Ctrl+c to exit !
3=3
no
press Ctrl+c to exit !
算法说明: 象拨竹笋一样从最内层括号开始,注意将括号改为数字不改变表达式的合法性
寻找最内层括号:找表达式最左的')' ,找表达式最右并且在前面所找')'左边
的'('这对括......
利用 dos 中断写密码程序(2007-03-20 10:46:00)
摘要:/* 编译器 TC */
#include <stdio.h>
#include <dos.h>
void main(void){
union REGS inregs,outregs;
int index;
char password[255];
do{
printf("Enter password:");
index = 0;
do{ inregs.h.ah = 8; /* int 21h 功能 8 键盘输入无回显 */
intdos(&inregs,&outregs);
if(outregs.h.al == '\r')
password[index] = NULL;
else if(outregs.h.al == '\b'){
if(index){
index --;
printf("\b \b");
}
else
printf("\a");
continue;
}
else{
printf("*");
password[index] = outregs.h.al;
}
if(index == 255){
password[index-1] = NULL;
break;
}
&......
分治法(2007-03-20 10:37:00)
摘要: /* 分治法简介
任何一个可以用计算机求解的问题所需的计算时间都与其规模
有关。问题的规模越小,越容易直接求解,解题所需的计算时间也
越少。例如,对于n个元素的排序问题,当n=1时,不需任何计算。
n=2时,只要作一次比较即可排好序。n=3时只要作3次比较即可,…。
而当n较大时,问题就不那么容易处理了。要想直接解决一个规模
较大的问题,有时是相当困难的。
分治法的设计思想是,将一个难以直接解决的大问题,分割成一
些规模较小的相同问题,以便各个击破,分而治之。
分治策略是:对于一个规模为n的问题,若该问题可以容易地解决
(比如说规模n较小)则直接解决,否则将其分解为k个规模较小的
子问题,这些子问题互相独立且与原问题形式相同,递归地解这些
子问题,然后将各子问题的解合并得到原问题的解。这种算法设计
策略叫做分治法。
如果原问题可分割成k个子问题,1<k≤n ,且这些子问题都可解
并可利用这些子问题的解求出原问题的解,那么这种分治法就是可行
的。由分治法产生的子问题往往是原问题的较小模式,这就为使用递
归技术提供了方便。在这种情况下,反复应用分治手段,可以使子问
题与原问题类型一致而其规模却不断缩小,最终使子问题缩小到很容
易直接求出其解。这自然导致递归过程的产生。分治与递归像一对孪
生兄弟,经常同时应用在算法设计之中,并由此产生许多高效算法。
分治法所能解决的问题一般具有以下几个特征:
1) 该问题的规模缩小到一定的程度就可以容易地解决
2) 该问题可以分解为若干个规模较小的相同问题,即该问题具有最优子
结构性质。
3) 利用该问题分解出的子问题的解可以合并为该问题的解;
4) 该问题所分解出的各个子问题是相互独立的,即子问题之间不包含公
共的子子问题。
上述的第一条特征是绝......
用C绘制正弦函数图(2007-03-20 10:19:00)
摘要:/* 好久没上博客了,最近在学 STL 和 MFC 他们让我有点手忙脚乱
尤其是 MFC ,以前用 C 写界面发好几个小时写出来的也不能令
人满意,而用 MFC 发不到一分钟就可以弄出一个大家都熟悉的
东西。C 不是用来弄界面的,C是用来写高效程序,是用来写 MFC
搞不出来的东西的,我应该这样想。学了一年多的面向过程方法
现在忽然要转到面向对象真的有点不自然。本来不想再搞C,一心
一意用面向对象解决问题,这学期开了计算机图形学,于是我又
弄TC了。象放不下旧情人,我真的放不下C,喜欢她的灵活,喜欢
她的指针,外面都是招 JAVA / C++ / C# / .NET …… 一大堆令
人眼发撩乱的东西,也许C的时代过去了,不过我放不下,我仍将
继续学C,学C更高级的东西,甚至学点汇编,搞混合编程。不为
饭碗,不问将来 ,只因为自己喜欢……
欢迎加入 编程爱好者群 : 28011342
AUTHOR : 江南孤峰
以下程序在 TC 下编译,在屏幕上绘制正弦曲线
*/
#include <stdio.h>
#include <math.h>
#include <conio.h>
#include <graphics.h>
void DrawCoordinate(void){
char text[6];
outtextxy(50,50,"Draw math function sin as followed : ");
line(100,100,100,380);
line(99,100,99,380);
sprintf(text,"%c",24); /* 向上的箭头 */
outtextxy(96,100,text);
strcpy(text,......