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

遇到一个学弟向我请教一个问题,按照要求写了一个程序,功能是实现了,但算法设计的不好,代码重复太多,仅供参考

题目描述
某少年宫引进了一批机器人小车。可以接受预先输入的指令,按指令行动。小车的基本动作很简单,只有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

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
                {
                    ;
                }
                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;
}

 

你可能感兴趣的:(C语言)