博文

迷宫搜索(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......

阅读全文(3009) | 评论:0

打印杨辉三角(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;
}
......

阅读全文(4969) | 评论: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  ......

阅读全文(3759) | 评论:0

有趣的数阵(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),遇到墙我们就回退
          因为我们知道方向变化的规律,我们按这个......

阅读全文(3482) | 评论:0

求子集(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   
     
\***......

阅读全文(3835) | 评论:0

表达式检验(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 !
 
 算法说明: 象拨竹笋一样从最内层括号开始,注意将括号改为数字不改变表达式的合法性
               寻找最内层括号:找表达式最左的')' ,找表达式最右并且在前面所找')'左边
               的'('这对括......

阅读全文(3130) | 评论:0

利用 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;
   }
&......

阅读全文(4096) | 评论:0

分治法(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) 该问题所分解出的各个子问题是相互独立的,即子问题之间不包含公
   共的子子问题。     上述的第一条特征是绝......

阅读全文(5724) | 评论:0

用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,......

阅读全文(5389) | 评论:0