题解 | #坐标移动#

坐标移动

http://www.nowcoder.com/practice/119bcca3befb405fbe58abe9c532eb29

C语言解题
#include <stdio.h>
#include <string.h>
int main()
{
    char tmp[10000];
    int len,i,off,num_len,x=0,y=0,off_tmp;
    char dir;
    scanf("%[^\n]", tmp);
    len = strlen(tmp);
    i = 0;
    while(i!=len)
    {
        dir = tmp[i];
        if(dir!='A' && dir!='S' && dir!='D' && dir!='W')
        {
            //此时输入无效,到下一个
            while(tmp[i++] != ';');
            continue;
        }
        i++;
        if(tmp[i]<'0' || tmp[i] > '9')
        {
            while(tmp[i++] != ';');
            continue;
        }
        sscanf(&tmp[i],"%d",&off);
        num_len = 0;
        off_tmp = off;
        while(off_tmp)
        {
            off_tmp /= 10;
            num_len++;
        }
        i += num_len;
        if(tmp[i] != ';')
        {
            while(tmp[i++] != ';');
            continue;
        }
        i++;
        switch(dir)
        {
            case 'A':
                x -= off;
                break;
            case 'D':
                x += off;
                break;
            case 'W':
                y += off;
                break;
            case 'S':
                y -= off;
                break;
        }
    }
    printf("%d,%d",x,y);
	return 0;
}


全部评论

相关推荐

qq乃乃好喝到咩噗茶:院校后面加上211标签,放大加粗,招呼语也写上211
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务