#include<stdio.h>
int qipan[8][8];
int x1,y1;
int check1 [2] ;
int check2 [2];
int count1 =1;
int count = 1;
int paixu(int,int);
int check(int,int);
int paixu(int x,int y)
{
x1 = x;
y1 = y;
check(x,y);
if(check(x,y) ==1)
{
return 0;
}
}
int main ()
{
int i,j,k,x,y;
check1[0] = -1;
check1[1] = -1;
for(i=0;i<8;i++)
{
for(j=0;j<8;j++)
{
qipan[i][j] = 0;
}
}
printf("请选择你的起始位置:");
scanf("%d %d",&x,&y);
qipan[x][y] = count1++;
paixu(x,y);
for(i=0;i<8;i++)
{
for(j=0;j<8;j++)
{
printf("%2d ",qipan[i][j]);
}
printf("\n");
}
return 0;
}
int check(int x,int y)
{
int i,j;
int p1[8][2] = {x-2,y-1,x-2,y+1,x-1,y+2,x-1,y-2,x+1,y-2,x+1,y+2,x+2,y-1,x+2,y+1};
int (*p2)[2] =p1;
for(i=0;i<8;i++)
{
for(j=0;j<2;j++)
{
if(*(*(p2+i)+j)>=0&&*(*(p2+i)+j)<8)
{
check1[j] = *(*(p2+i)+j);
}
}
if(check1[0] == -1 ||check1[1] ==-1)
{
check1[0] == check1[1] == -1;
}
if(check1[0]!=-1&&check1[1] !=-1)
{
if(qipan[check1[0]][check1[1]]==0)
{
qipan[check1[0]][check1[1]] = count1++;
check2[0] = check1[0];
check2[1] = check2[1];
check1[0] = check1[1] = -1;
count++;
if(count<64)
{
paixu(check2[0],check2[1]);
}
else
{
return 1;
}
}
check1[0] = check1[1] = -1;
}
}
qipan[x][y] = 0;
x = x1;
y = y1;
return 0;
}
![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/544948622626198.jpg)
C语言问题第一次盲敲是棋盘问题随便给个点然后马走日走完8×8棋盘。但我的运行会错,求指出问题所在
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
3条回答 默认 最新
- qfl_sdu 2021-07-14 10:00关注
你的paixu()函数中调用了check()函数,check()函数中调用了paixu()函数,形成循环嵌套了,出来的结果肯定是不对的
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 Python 如何安装 distutils模块
- ¥15 关于#网络#的问题:网络是从楼上引一根网线下来,接了2台傻瓜交换机,也更换了ip还是不行
- ¥15 资源泄露软件闪退怎么解决?
- ¥15 CCF-CSP 2023 第三题 解压缩(50%)
- ¥30 comfyui openpose报错
- ¥20 Wpf Datarid单元格闪烁效果的实现
- ¥15 图像分割、图像边缘提取
- ¥15 sqlserver执行存储过程报错
- ¥100 nuxt、uniapp、ruoyi-vue 相关发布问题
- ¥15 浮窗和全屏应用同时存在,全屏应用输入法无法弹出