海龟作图 请帮忙找错...头都炸了...
设想有一只机械海龟,它在c语言的控制下在屋里四处爬行。海龟拿了一支笔,这只笔或朝 上或朝下,当笔朝下时,海龟用笔画下自己的轨迹,当笔朝上时,海龟在移动过程中什么也不画。
使用一个50x50的数组,并把数组初始化为0。从一个装有命令的数组中读取各种命令。不
管是笔朝上还是笔朝下,都要跟踪海龟的当前位置。假定海龟总是从地板上(0,0)出发
,并且开始时笔是朝上的。程序必须处理的一组命令如下:
命令 含义
1 笔朝上
2 笔朝下
3 右转弯
4 左转弯
5,10 向前走10格(或其他的格数)
6 打印50x50的数组
9 数据结束(标记)
我写的:
#include<stdio.h>
#include<stdlib.h>
int main()
{
int array[50][50];
int cmd[20];
int i, penup=0, turn=1, x=0, y=0, m=0, n=0;
for(i=0;i<=19;i++)
cmd[i]=0;
for(x=0;x<=49;x++)
for(y=0;y<=49;y++)
array[x][y]=0;
for(i=0;i<=19;i++) /*输入移动命令*/
{
scanf("%d",&cmd[i]);
if(cmd[i]==9)
break;
}
i=0;
while(cmd[i]!=9){
switch(cmd[i]){
case 1: penup=0;
case 2: penup=1;
case 3: (turn-1)%4;
case 4: (turn+1)%4;
case 5: scanf("%d",&m);
switch(turn){
case 0: for(;n<=m;x--,n++)/*up*/
{
if(penup==1)
array[x][y]=1;
}
n=0
;
case 1: for(;n<=m;y++,n++)/*right*/
{
if(penup==1)
array[x][y]=1;
}
n=0;
case 2: for(;n<=m;x++,n++)/*down*/
{
if(penup==1)
array[x][y]=1;
}
n=0;
case 4: for(;n<=m;y--,n++)/*left*/
{
if(penup==1)
array[x][y]=1;
}
n=0;
}
case 6: for(x=0;x<=49;x++)
for(y=0;y<=49;y++)
{
if(array[x][y]==1)
printf("*");
else
printf(" ");
if((y+1)%50==0)
printf("\n");
}
}
++i;
}
system("pause");
return 0;
}