#include <cctype> #include <iostream> using namespace std; #include<sstream> bool isnumber(string tmp)//判断是否为纯数字字符串 { for(char c : tmp) { if(!isdigit(c)) { return false; } } return !tmp.empty(); } int main() { //输入按照分号分割。使用getline和stringstream来处理字符串的分割 //合法的输入是ADWS四个字符加一个1-99的数字,其他输入都不合法 //每次读取一个操作判断是否合法,然后移动相应的坐标即可 int x=0,y=0;//初始坐标位置 string move; while(getline(cin,move,';'))//按照分号依次读取 { //判断是否为空 if(move.empty()) continue; char dir=move[0]; if(dir=='W'|| dir=='A'||dir=='S'||dir=='D')//判断方向 { string dis=move.substr(1);//读取移动距离 //判断移动距离是否为1-99的数字 if(isnumber(dis)) { int num=stoi(dis); if(num>=1 && num<=99) { switch(dir) { case 'W':y+=num;break; case 'A':x-=num;break; case 'S':y-=num;break; case 'D':x+=num;break; } } } } } cout <<x<<','<<y; } // 64 位输出请用 printf("%lld")