题目描述
无论在中国象棋还是国际象棋中“马”都是走“日”字的。比如我们把国际象棋的棋盘的左上角的坐标设为(0,0),它右边格子的坐标为(0,1),下边的格子坐标为(1,0),右下格子的坐标为(1,1),其它点的坐标以此类推。如果马现在位于(4,4)上,那么它一步能走到的格子的坐标分别为(3,2)、(2,3)、(2,5)、(3,6)、(5,6)、(6,5)、(6,3)、(5,2),现在我们把这八种走法分别标记为1、2、3、4、5、6、7、8,也就是说当输入为1是,代表马向左上偏下的点走,输入为2时代表马向左上偏上的点走,其它依次类推。现请你写一段程序,记录马在棋盘上行走的路线。
输入:
先是八行,每行为长度为8的字符串,代表棋盘上每个格里的字符(只包含大写字母)。
第9行是2个整数,代表马的初始位置。
第10行是一个字符串(长度大于0小于30),代表马每一步如何走。测试数据保证合法,且保证不存在走到棋盘以外的情况。
输出:
只有一行,依次为马行走路线上的格子里的字符(包括马的初始位置)。
#include <stdio.h>
#include <math.h>
int main(void)
{
char ch[8][8];
int m,n;
int row,col;
for(row=0;row<8;row++)
{for(col=0;col<8;col++)
scanf("%c",&ch[row][col]);
getchar();}
scanf("%d%d",&m,&n);
char b;
getchar();
scanf("%c",&b);
printf("%c",ch[m][n]);
while(b!='\n')
{
if(b=='1')
{
m=m-1;n=n-2;
printf("%c",ch[m][n]);
}
else if(b=='2')
{
m=m-2;n=n-1;
printf("%c",ch[m][n]);
}
else if(b=='3')
{
m=m-2;n=n+1;
printf("%c",ch[m][n]);
}
else if(b=='4')
{
m=m-1;n=n+2;
printf("%c",ch[m][n]);
}
else if(b=='5')
{
m=m+1;n=n+2;
printf("%c",ch[m][n]);
}
else if(b=='6')
{
m=m+2;n=n+1;
printf("%c",ch[m][n]);
}
else if(b=='7')
{
m=m+2;n=n-1;
printf("%c",ch[m][n]);
}
else if(b=='8')
{
m=m+1;n=n-2;
printf("%c",ch[m][n]);
}
scanf("%c",&b);
}
return 0;
}
亲测可过