有一烏龜在一10*10的棋盤最左上角(1,1)的位置,現在8、2、4、6分別表示上下左右的方向走動,請畫出其路徑圖。其中1表示走過、0表示未走過。輸入0時畫出路徑圖。途中若超過棋盤邊界或者是重複走動,皆要停止走動並畫出路徑圖。
如下圖顯示:
\ \ 1 2 3 4 5 6 7 8 9 10
1 1 0 0 0 0 0 0 0 0 0
2 1 1 1 0 0 0 0 0 0 0
3 0 0 1 1 0 0 0 0 0 0
4 0 0 1 1 0 0 0 0 0 0
5 0 0 0 0 0 0 0 0 0 0
6 0 0 0 0 0 0 0 0 0 0
7 0 0 0 0 0 0 0 0 0 0
8 0 0 0 0 0 0 0 0 0 0
9 0 0 0 0 0 0 0 0 0 0
10 0 0 0 0 0 0 0 0 0 0
是c唷~不是用c++的語法!
希望大家可以幫我一下~~
2007-01-01 19:52:13 · 1 個解答 · 發問者 ? 3 in 電腦與網際網路 ➔ 程式設計
#include
int main()
{
int a[11][11];
int i,j,k,done;
for (i=0;i<10;i++)
for (j=0;j<10;j++)
a[i][j]=0;
a[0][0]=1;
done=0; i = 0; j = 0;
do
{
do
{
printf("現在在 %d,%d. 下一步請按 (2,4,6,8): ", i+1,j+1);
scanf("%d", &k);
} while ((k!=2) && (k!=4) && (k!=6) && (k!=8));
switch (k)
{
case 2: /* 下 */
if (i==9)
done=1;
else if (a[++i][j] == 1)
done=1;
else
a[i][j]=1;
break;
case 4: /* 左 */
if (j==0)
done=1;
else if (a[i][--j] == 1)
done=1;
else
a[i][j]=1;
break;
case 6: /* 右 */
if (j==9)
done=1;
else if (a[i][++j] == 1)
done=1;
else
a[i][j]=1;
break;
case 8: /* 上 */
if (i==0)
done=1;
else if (a[--i][j] == 1)
done=1;
else
a[i][j]=1;
break;
}
} while (done==0);
for (i=0;i<10;i++)
{
for (j=0;j<10;j++)
printf("%2d", a[i][j]);
printf("\n");
}
return;
} /* end of main */
如果有問題, 請來函討論. 不然, 我可能會錯失你再補充的疑點.
2007-01-02 09:57:18 · answer #1 · answered by JJ 7 · 0⤊ 0⤋