编写程序,由用户输入四条指令,程序输出最后小车坐标。
2017-11-01 22:11
218 查看
遇到一个学弟向我请教一个问题,按照要求写了一个程序,功能是实现了,但算法设计的不好,代码重复太多,仅供参考
题目描述
某少年宫引进了一批机器人小车。可以接受预先输入的指令,按指令行动。小车的基本动作很简单,只有3种:左转(记为L),右转(记为R),向前走(D), 走的长度(直接记数字)。设初始朝向直角坐标的Y正方向,起点坐标为(0,0)。
例如,我们可以对小车输入如下的四条指令:
L,10
L,10
L,10
L,10
则,小车先左转,然后直行10厘米,左转,再走10厘米,再... 不难看出,对于此指令串,小车又回到了出发地(0,0)。
若输入以下动作:
D 10
D 10
D 10
D 10,则:小车在(0,40)位置。
编程任务是:编写程序,由用户输入四条指令,程序输出最后小车坐标。
#include<stdio.h>
int main(void)
{
char cDirection = 0; //获取命令中的方向
char cOldDirection = 'U';//原来的方向,U:up;D:down;L:left;R:right
int iNumber=0;//命令中走的单位
int x=0,y=0;//坐标x,y的值
int iLoop=0;//记录命令的次数
puts("please your command:\n");
while(iLoop<4)
{
scanf("%c,%d",&cDirection,&iNumber);
switch(cDirection)
{
case 'L':
if('U' == cOldDirection)
{
x-=iNumber;
cOldDirection='L';
}
else if('L' == cOldDirection)
{
y-=iNumber;
cOldDirection='D';
}
else if('R' == cOldDirection)
{
y+=iNumber;
cOldDirection='U';
}
else if('D' == cOldDirection)
{
x+=iNumber;
cOldDirection='R';
}
else
{
;
}
iLoop++;
break;
case 'R':
if('U' == cOldDirection)
{
x+=iNumber;
cOldDirection='R';
}
else if('L' == cOldDirection)
{
y+=iNumber;
cOldDirection='U';
}
else if('R' == cOldDirection)
{
y-=iNumber;
cOldDirection='D';
}
else if('D' == cOldDirection)
{
x-=iNumber;
cOldDirection='L';
}
else
{
;
}
a111
iLoop++;
break;
case 'D':
if('U' == cOldDirection)
{
y+=iNumber;
cOldDirection='U';
}
else if('L' == cOldDirection)
{
x-=iNumber;
cOldDirection='L';
}
else if('R' == cOldDirection)
{
x+=iNumber;
cOldDirection='R';
}
else if('D' == cOldDirection)
{
y-=iNumber;
cOldDirection='D';
}
else
{
;
}
iLoop++;
break;
}
};
printf("the localtion is:(%d,%d)\n",x,y);
getchar();
return 0;
}
题目描述
某少年宫引进了一批机器人小车。可以接受预先输入的指令,按指令行动。小车的基本动作很简单,只有3种:左转(记为L),右转(记为R),向前走(D), 走的长度(直接记数字)。设初始朝向直角坐标的Y正方向,起点坐标为(0,0)。
例如,我们可以对小车输入如下的四条指令:
L,10
L,10
L,10
L,10
则,小车先左转,然后直行10厘米,左转,再走10厘米,再... 不难看出,对于此指令串,小车又回到了出发地(0,0)。
若输入以下动作:
D 10
D 10
D 10
D 10,则:小车在(0,40)位置。
编程任务是:编写程序,由用户输入四条指令,程序输出最后小车坐标。
#include<stdio.h>
int main(void)
{
char cDirection = 0; //获取命令中的方向
char cOldDirection = 'U';//原来的方向,U:up;D:down;L:left;R:right
int iNumber=0;//命令中走的单位
int x=0,y=0;//坐标x,y的值
int iLoop=0;//记录命令的次数
puts("please your command:\n");
while(iLoop<4)
{
scanf("%c,%d",&cDirection,&iNumber);
switch(cDirection)
{
case 'L':
if('U' == cOldDirection)
{
x-=iNumber;
cOldDirection='L';
}
else if('L' == cOldDirection)
{
y-=iNumber;
cOldDirection='D';
}
else if('R' == cOldDirection)
{
y+=iNumber;
cOldDirection='U';
}
else if('D' == cOldDirection)
{
x+=iNumber;
cOldDirection='R';
}
else
{
;
}
iLoop++;
break;
case 'R':
if('U' == cOldDirection)
{
x+=iNumber;
cOldDirection='R';
}
else if('L' == cOldDirection)
{
y+=iNumber;
cOldDirection='U';
}
else if('R' == cOldDirection)
{
y-=iNumber;
cOldDirection='D';
}
else if('D' == cOldDirection)
{
x-=iNumber;
cOldDirection='L';
}
else
{
;
}
a111
iLoop++;
break;
case 'D':
if('U' == cOldDirection)
{
y+=iNumber;
cOldDirection='U';
}
else if('L' == cOldDirection)
{
x-=iNumber;
cOldDirection='L';
}
else if('R' == cOldDirection)
{
x+=iNumber;
cOldDirection='R';
}
else if('D' == cOldDirection)
{
y-=iNumber;
cOldDirection='D';
}
else
{
;
}
iLoop++;
break;
}
};
printf("the localtion is:(%d,%d)\n",x,y);
getchar();
return 0;
}
相关文章推荐
- 编写一个程序,接受用户输入的一段英文文字后,输出其中的字符数、单词数和句子数(设句子以"?"、"!"、"."结束)。
- 编写程序,用户输入一个位以上的整数,输出其百位以上的数字。例如用户输入1234.则程序输出12.
- 编写程序提示用户输入日期,输出这天为星期几。
- 编写一个求n个数的平均值及最小值的程序。要求:程序执行时,用户先由键盘输入n的值,之后输入n个数,最后,程序显示平均值和最小值。
- 编写程序提示用户输入日期,输出这天为星期几。
- 编写程序,输出用户输入的两个数中的较大者
- 43.编写一个程序,判断用户输入的字符是否是数字,若是数字,则输出“a numerical character”
- 编写程序,输出用户输入的两个数中的较大者。
- 3.4 编写一个程序,将用户输入的数字(0~6)转换成相应的星期值输出。如用户输 入 3,则程序输出“Today is Wed”;用户输入 0,则输出“Today is Sun”。如果用户输入 的数据
- 编写一个程序,对用户输入的任意一组数字字符如{3,1,4,7,2,1,1,2,2},输出其中出现次数最多的字符,并显示其出现次数。如果有多个字符出现次数均为最大且相等,则输出最先出现的那个字符和它出现
- Prime C++ Exercise 2.11 编写程序,要求用户输入两个数——底数(base)和指数 (exponent),输出底数的指数次方的结果。
- 编写一个程序,输入用户的姓名和电话号码,按姓名的词典顺序排列后,输出用户的姓名和电话号
- C++:利用如下公式,编写函数计算∏的值,直到最后一项的绝对值小于e,主程序接收从键盘输入的e,输出∏的值(保留5位小数)。 ∏/4 = 1-1/3+1/5-1/7...
- P51 第4题 编写一个程序,判断用户输入的字符是否是数字,若是数字,则输出“a numerical character”,否则输出“other character”.
- 编写一个程序,要求用户输入下限整数和一个上限整数,然后,依次计算从下限到上限的每一个整数的平方的加和,最后显示结果
- 简单编程(三)编写一个程序,要求用户输入两个整数,然后计算并输出他们的和、差、积、商。
- Joseph环程序,接受用户输入的Joseph长度Length,开始计数的位置Ini,以及读到第Count个节点时,将该节点从Joseph环中删除,最后输出出环序列。
- 2013-03-07:编写一个JAVA程序,用户用键盘只能输入整数,程序输出这些整数的乘积
- 编写一个JAVA应用程序,用户从键盘只能输入整数,程序输出这些整数的乘积
- 编写程序,要求用户输入一组数,输出信息说明其中有多少负数?