机器人 C语言
#include<stdio.h>#include<stdlib.h>/*机器人面向x轴正方向站在原点。当他接受到一个数字n时开始动作。当n=-1时,机器人左转,n=-2...
#include <stdio.h>
#include <stdlib.h>
/*机器人面向x轴正方向站在原点。当他接受到一个数字n时开始动作。
当n=-1时,机器人左转,
n=-2时,右转,
n>0时,机器人前进n步。
n=0时,结束。
输入:
若干个整数,每个整数大于等于-2,小于100。最后一个整数为0,代表输入结束。(
除最后一个整数,其他整数均不为0)
输出:
两个整数,每个一行,代表机器人最终的x坐标和y坐标。
输入样例:
-1
2
-2
1
0
输出样例:
1
2
*/
int main()
{
int n,i=0,z[4]= {},sumx,sumy;
while(n!=0)
{
scanf("%d",&n);
if(n==-1)
{
i++;
if(i==4)
{
i=0;
}
scanf("%d",&n);
if(n>0)
z[i]=z[i]+n;
}
if(n==-2)
{
i--;
if(i==-1)
{
i=3;
}
scanf("%d",&n);
if(n>0)
z[i]=z[i]+n;
}
}
sumx=z[0]-z[2];
sumy=z[1]-z[3];
printf("%d\n%d\n",sumx,sumy);
return 0;
}
//快给看看哪错了??
没给定义应该是都初始化为0了吧~
二楼的我在批阅系统试过了,也有两个答案错误,应该是算法有问题吧 展开
#include <stdlib.h>
/*机器人面向x轴正方向站在原点。当他接受到一个数字n时开始动作。
当n=-1时,机器人左转,
n=-2时,右转,
n>0时,机器人前进n步。
n=0时,结束。
输入:
若干个整数,每个整数大于等于-2,小于100。最后一个整数为0,代表输入结束。(
除最后一个整数,其他整数均不为0)
输出:
两个整数,每个一行,代表机器人最终的x坐标和y坐标。
输入样例:
-1
2
-2
1
0
输出样例:
1
2
*/
int main()
{
int n,i=0,z[4]= {},sumx,sumy;
while(n!=0)
{
scanf("%d",&n);
if(n==-1)
{
i++;
if(i==4)
{
i=0;
}
scanf("%d",&n);
if(n>0)
z[i]=z[i]+n;
}
if(n==-2)
{
i--;
if(i==-1)
{
i=3;
}
scanf("%d",&n);
if(n>0)
z[i]=z[i]+n;
}
}
sumx=z[0]-z[2];
sumy=z[1]-z[3];
printf("%d\n%d\n",sumx,sumy);
return 0;
}
//快给看看哪错了??
没给定义应该是都初始化为0了吧~
二楼的我在批阅系统试过了,也有两个答案错误,应该是算法有问题吧 展开
展开全部
这样写吧,清楚一点。
我觉得我这样定义的话会让程序清楚很多。
typedef struct
{
int x;
int y;
} pos_stru;
void main(void)
{
int cmd;
int face[4]={0,1,2,3}; //x+,y+,x-,y- 定义行进方向
int face_start=face[0]; //初始方向
pos_stru start={0,0}; //开始位置
while(scanf("%d",&cmd)!=NULL)
{
if(cmd==0)
break;
if(cmd<-2) //错误处理
{
printf("Invide input.");
}
switch(cmd) //先处理方向问题-1/-2
{
case -1: //左转
if(face_start<3)
face_start=face[face_start+1];
else
face_start=face[0];
break;
case -2: //右转
if(face_start>0)
face_start=face[face_start-1];
else
face_start=face[3];
break;
default:
break;
}
if(cmd>0) //不是方向的处理
switch(face_start)
{
case 0:
start.x+=cmd;
break;
case 1:
start.y+=cmd;
break;
case 2:
start.x-=cmd;
break;
case 3:
start.y-=cmd;
break;
default:
break;
}
//printf("tmp out:x=%d,y=%d\n",start.x,start.y);
}
printf("result:x=%d,y=%d\n",start.x,start.y);
}
out put:
-1
2
-2
1
0
result:x=1,y=2
Press any key to continue
问题补充:
没给定义应该是都初始化为0了吧~
答:不对。随机的这也是我们要求C语言必须初值的原因。下面是试验
void main(void)
{
int a;
int b=0;
printf("a=%d,b=%d\n",a,b);
}
output:
a=-858993460,b=0
Press any key to continue
我觉得我这样定义的话会让程序清楚很多。
typedef struct
{
int x;
int y;
} pos_stru;
void main(void)
{
int cmd;
int face[4]={0,1,2,3}; //x+,y+,x-,y- 定义行进方向
int face_start=face[0]; //初始方向
pos_stru start={0,0}; //开始位置
while(scanf("%d",&cmd)!=NULL)
{
if(cmd==0)
break;
if(cmd<-2) //错误处理
{
printf("Invide input.");
}
switch(cmd) //先处理方向问题-1/-2
{
case -1: //左转
if(face_start<3)
face_start=face[face_start+1];
else
face_start=face[0];
break;
case -2: //右转
if(face_start>0)
face_start=face[face_start-1];
else
face_start=face[3];
break;
default:
break;
}
if(cmd>0) //不是方向的处理
switch(face_start)
{
case 0:
start.x+=cmd;
break;
case 1:
start.y+=cmd;
break;
case 2:
start.x-=cmd;
break;
case 3:
start.y-=cmd;
break;
default:
break;
}
//printf("tmp out:x=%d,y=%d\n",start.x,start.y);
}
printf("result:x=%d,y=%d\n",start.x,start.y);
}
out put:
-1
2
-2
1
0
result:x=1,y=2
Press any key to continue
问题补充:
没给定义应该是都初始化为0了吧~
答:不对。随机的这也是我们要求C语言必须初值的原因。下面是试验
void main(void)
{
int a;
int b=0;
printf("a=%d,b=%d\n",a,b);
}
output:
a=-858993460,b=0
Press any key to continue
展开全部
#include "stdafx.h"
#include<iostream.h>
int main()
{
int n=0,i=0,z[4]= {0},sumx,sumy;//数组z初始化
while(scanf("%d",&n)&&n!=0)//n要初始化
{
if(n==-1)
{
i++;
if(i==4)
{
i=0;
}
scanf("%d",&n);
if((n>0)&&(n<100))
z[i]=z[i]+n;
}
if(n==-2)
{
i--;
if(i==-1)
{
i=3;
}
scanf("%d",&n);
if((n>0)&&(n<100))
z[i]=z[i]+n;
}
}
sumx=z[0]-z[2];
sumy=z[1]-z[3];
printf("%d\n%d\n",sumx,sumy);
return 0;
}
#include<iostream.h>
int main()
{
int n=0,i=0,z[4]= {0},sumx,sumy;//数组z初始化
while(scanf("%d",&n)&&n!=0)//n要初始化
{
if(n==-1)
{
i++;
if(i==4)
{
i=0;
}
scanf("%d",&n);
if((n>0)&&(n<100))
z[i]=z[i]+n;
}
if(n==-2)
{
i--;
if(i==-1)
{
i=3;
}
scanf("%d",&n);
if((n>0)&&(n<100))
z[i]=z[i]+n;
}
}
sumx=z[0]-z[2];
sumy=z[1]-z[3];
printf("%d\n%d\n",sumx,sumy);
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
数组 z 没初始化吧(main函数第2行 如果不算语义错误的话
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询