题解 | #坐标移动#

坐标移动

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

#include<ctype.h>

int main(void) {
    char s[10000] = "";
    char ch[100] = "";
    int i = 0;
    int j = 0;
    int row = 0;
    int col = 0;
    int times = 1;
    int num = 0;
    
    scanf("%s", s);
    for(i = 0,j = 0; i < strlen(s);i++) {
        times = 1;
        num = 0;
        //找到;,提取分号前面的字符串,赋值给数组ch
        if(s[i] != ';') {
            ch[j++] = s[i];
        }else {
            ch[j] = 0;//将数组变成字符串
            //已经找到字符串,现在处理字符串:
          //先将数字部分的字符剥离,判断是否数字,只要字符有一个不是数字,该字符串不处理
          //如果是数字,就字符转换成数字,最后根据第一个字符是'A','S','D','W',相加减
            for(j = strlen(ch)-1; j >= 1; j--) {
                if(isdigit(ch[j]) == 0) {
                    num = 0;
                    break;
                }
                num += (ch[j] - '0')*times;
                times *= 10;
            }
            j = 0;
            
            if(ch[0] == 'A') {
                row-=num;
            }
            else if(ch[0] == 'S') {
                col-=num;
            }
            else if(ch[0] == 'W') {
                col += num;
            }
            else if(ch[0] == 'D') {
                row += num;
            }
        }
    }
    printf("%d,%d",row,col);
    
    return 0;
}
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务