当前位置:三九宝宝网 → 宝宝教育 → 教学论文 → 正文

用C语言编一个迷宫程序

更新:12-22 整理:39baobao.com
字体:

[求c语言中各类运算符的优先级别]c/C++的优先级 优先级 操作符 结合性 1 :: 左 2 . -&gt; [] () 左 3 ++ -- ~ ! - + & * () sizeof new delete castname_cast<type&gt; 单目操作符 右 4 .* -&gt;* 左 5 * / % 左...+阅读

-# --------### # ## # # ### ----# # #-## # # # #### #### # ## ## #-# ## # # # #---# ## # ## # # # # -# ### ## #### ## # # ----# # # ## # # # ## ### ## -# --# ---### -* # ## # # ### ----# # #-## # # -----### #### # ## ## #-# ## # # # #---# ## # ## # # # # -# ### ## #### ## # # ----# # # ## # # # ## ### ## 按上图,老鼠用“*”来表示,要求从迷宫的左上脚选择一条路径,跑道右下脚的出口。也许用神经网络、用遗传算法之类能找到一个最佳的做法,但我这个程序是基于对迷宫完全无知,而且没有试验的这个前提,所以我只能采用最机械的办法:每条路都试探。具体是这样的:向左看看,能否过去。只要左面不是墙,就走到出一步。若左面不能过去,看下面,再看右面...若三个方向都不能过去,只能回到上一步,重复干... 注释一:你能看见迷宫几乎完全是随机的,但为了保证一定有一条通道,我在起点和终点附近各放了九个可以通行的点。不算作弊吧。 注释二:循环里面的延时对于PENTIUM几乎一点作用都没有。所以运行时你或者选用 STEP,或者把延时提高一点,才能看清小白鼠是如何迈向前途未卜的新一步,又是如何迷途知返,重新审视自己的步伐。 注释三:这个程序的技巧很好,但完全没有注释,风格也不太好,但这正是几年前我的标准的程序,所以现在我也不改,直接拿出来,仅供一娱。 注释四:程序用TC才能编译。VC,标准C中没有“gotoxy”等函数。当然,这只影响界面显示,不影响我们老鼠行走的算法。 -------------------------------------------------------------------------------- 源程序如下: #include#include#include#includemain() {int x,y,a[72][22]; char o; int c,d,four,k=0,i,end,step; randomize(); /* printf("Do you want it run or step?(0/1)"); scanf("%d",&step);*/ clrscr(); for(x=0;x3000) { gotoxy(30, 23); printf("Too long!"); end=1; break;} }while(1); if (end==1) break; /* gotoxy(x,y);printf("*");*/ gotoxy(c,d);printf("-"); gotoxy(16, 23); printf("step:%d ", k); gotoxy(x,y); printf("*"); if (step==1) getch(); }/* no end point*/ if (end==1) printf("Error."); else printf("ok!"); getch(); }/*end main()*/ 看懂程序了吗?当时我发现必须用一些东西来记录老鼠的历史,即要知道在该点是否已经向右走过?是否向左走过?用了4天脑袋里跳出“素数”这样一个悠久的名词,于是一切就水到渠成了! 在Do-While中的第一个if的意思是:如果右边的方格是如果从未走过的空地(值为1),走过去。但是,如果上下左右都没有值为1的空地,就必须考虑退路了。这时four==1,查看一下我是否已经走过这个地方 (a[x][y]%2!=0)?我是否从那里过来的(a[x+1][y]%7==0)?也就是说当four==4时我只走回头路。

本文地址:https://www.39baobao.com/show/29_12956.html

以上内容来自互联网,请自行判断内容的正确性。若本站收录的信息无意侵犯了贵司版权,请联系我们,我们会及时处理和回复,谢谢.

以下为关联文档:

C语言数组编程题#include <stdio.h> #include <string.h> void charNo(char *ch) { int a,b,c,d; int temp; int i; a=b=c=d=0; for(i=0;i<strlen(ch);i++) { temp=(int)ch[i]; if((temp>=6...

c语言编程题数组#include <stdio.h> int main() { char str[100]={0}; char ch; int i=0; printf("输入字符串!\n"); scanf("%c",&ch); while(ch!='\n') { if (ch<='z'&&ch>='a') { if(ch=='z')ch=...

C语言程序设计基础数组问题一. 输入不超过100个整数,然后按从小到大的次序输出。#define M 10 main() {int a[M],i,j,t; printf("请输入数据:"); for(i=0;i<M;i++) scanf("%d",&a[i]); for(i=0;i<M-1;i++) for(...

求几道简单C语言编程题关于数组的感谢 !第一题: #include "stdio.h" void main() {int a[10]; int i,max; for(i=0;i<10;++i) scanf("%d,",&a[i]); max=a[0]; for(i=1;i<10;i++) { if(max<a[i]); max=a[i]; } printf("最...

C语言一维数组程序题不知道你那一点不明白,我就一点一点的讲解啦!别嫌啰嗦啊! 1.在头文件stdio.h和string.h中给出了函数的原型。使用字符串处理函数时要引入相应的头文件。 2.char a[80]="AB",b[80]...

谁帮我做下c语言数组的题#include<stdio.h> int max,min; main() { int a[10],i,*p; void a1(); printf("请输入十个整数\n"); for(i=0;i<10;i++) scanf("%d",a[i]); p=a; a1(p); printf("max=%d,min=%d",ma...

C语言程序设计数组题原发布者:爱笑的涂鸦哥 第4章数组4.1内容概述本章主要介绍了数值数组和字符数组的定义、初始化、元素引用和数组数据的输入与输出,字符数组实现字符串、字符串函数的实现与调...

找一些C语言的关于数组的程序题14下面程序可求出矩阵 a 的两条对角线上的元素之和,请填空 j=2 j>=0 15. 下面程序段将输出 computer,请填空。 iif(i16. 下面程序的功能是在三个字符串中找出最小的。请填空。...

C语言一道简单的数组编程题//#include "stdafx.h"//vc++6.0加上这一行. #include "stdio.h" void main(void){ int a[1000],i,k; for(k=i=0;iif((a[i]=i+1)%77 & (a[i]%7==0 || a[i]%11==0)) printf(++k%5...