您的位置:首页 > 其它

编写程序,由用户输入四条指令,程序输出最后小车坐标。

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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐