思路:
设置loc_right表示第一位是不是asdw, 设置num_isright表示后面的是不是数字;
先看第一位,如果第一位是asdw就看下一位,设置number当做位移量=0,如果是数字,number=number*10+(data[i]-48)并且把num_isright设置为1(不同的ide可能要不要减去不一定,比如我在vs上面跑就不用减),如果遇到不是数字的,就把num_isright设置为0并让i指向下一个分号,如果loc_isright和num_isright都是1,那么xy增加对应偏移量就行了
#include<stdio.h>
int main(){
char data[10001]={0};
scanf("%[^\n]", data);
int x=0,y=0;
int i;
for (i=0; data[i]!='\0'; i++){
int loc_isright = 0;
int num_isright = 0;
int number = 0;
char sign=data[i];
if(sign=='A' || sign=='S' || sign=='D' || sign =='W')
{
loc_isright =1;
i++;
for(;data[i]!=';'; i++)
{
if(data[i]>=48 && data[i]<=57){
num_isright = 1;
number = number*10+(data[i]-48);
}
else{
num_isright = 0;
break;
}
}
if(loc_isright && num_isright){
if(sign == 'A'){
x=x-number;
}
else if(sign == 'D'){
x=x+number;
}
else if(sign == 'W'){
y = y + number;
}
else{
y = y - number;
}
}
else{
while(data[i]!=';')i++;
}
}
else{
while(data[i]!=';')i++;
}
}
printf("%d,%d", x, y);
return 0;
}