高处的药匣阅读答案:我用c语言编了一个骑士漫游的程序,可是不运行请指教

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/26 17:54:23
必须是用c编的,不是c++,提供的算法可以在Devlc++上运行的哦

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
main()
{
int a[8][8]={0};
int e,i,x,y;
int n=1;
srand(time(NULL));
e=rand()%7;i=rand()%7;
while(n<=64){
if(0<=(e-2)&&(e-2)<=7)
if(0<=(i-1)&&(i-1)<=7)
if(a[e-2][i-1]==0){
e=e-2;
i=i-1;
a[e][i]=n;
n++;
}

if(0<=(e-1)&&(e-1)<=7)
if(0<=(i-2)&&(i-2)<=7)
if(a[e-1][i-2]==0){
e=e-1;
i=i-2;
a[e][i]=n;
n++;
}

if(0<=(e+1)&&(e+1)<=7)
if(0<=(i-2)&&(i-2)<=7)
if(a[e+1][i-2]==0){
e=e+1;
i=i-2;
a[e][i]=n;
n++;
}

if(0<=(e+2)&&(e+2)<=7)
if(0<=(i+1)&&(i+1)<=7)
if(a[e+2][i+1]==0){
e=e+2;
i=i+1;
a[e][i]=n;
n++;
}

if(0<=(e+2)&&(e+2)<=7)
if(0<=(i+1)&&(i+1)<=7)
if(a[e+2][i+1]==0){
e=e+2;
i=i+1;
a[e][i]=n;
n++;
}

if(0<=(e+2)&&(e+2)<=7)
if(0<=(i-1)&&(i-1)<=7)
if(a[e+2][i-1]==0){
e=e+2;
i=i-1;
a[e][i]=n;
n++;
}
if(0<=(e+1)&&(e+1)<=7)
if(0<=(i+2)&&(i+2)<=7)
if(a[e+1][i+2]==0){
e=e+1;
i=i+2;
a[e][i]=n;
n++;
}

if(0<=(e-1)&&(e-1)<=7)
if(0<=(i+2)&&(i+2)<=7)
if(a[e-1][i-2]==0){
e=e-1;
i=i+2;
a[e][i]=n;
n++;
}

if(0<=(e-2)&&(e-2)<=7)
if(0<=(i+1)&&(i+1)<=7)
if(a[e-2][i+1]==0){
e=e-2;
i=i+1;
a[e][i]=n;
n++;
}

}
下面输出

system("pause");
return 0;
}

你的程序n运行到40的时候,在while里面死循环了,我不清楚你程序的逻辑是什么,但是你在while中的逻辑肯定是错的,你的n不符合所有的条件,所以运行不到n++,就一直死循环了。
system("pause"); 也不是输出。