洛谷 P1597 语句解析

洛谷 P1597 语句解析_第1张图片
注意:语言句数不固定;存在a:=a;的赋值语言。
第一组数据:
输入:a:=3;b:=b;c:=a;b:=8;a:=b;
输出:8 8 3
第四组数据:
输入:a:=b;b:=a;c:=3;c:=c;b:=b;a:=a;
输出:0 0 3

#include
using namespace std;
int main()
{
 string s;cin >> s;
 int a=0,b=0,c=0,len = s.length();
 for (int i = 0; i < len; i+=5)
 {
  switch (s[i])
  {
  case'a':
   if (s[i+3] >= '0'&&s[i + 3] <= '9')a = s[i + 3] - '0';//赋值为数字
   else//赋值为字母
   {switch (s[i+3]){case 'a':a = a; break;case 'b':a = b; break;case 'c':a = c; break;default:break;}}break;
  case'b':
   if (s[i + 3] >= '0'&&s[i + 3] <= '9')b = s[i + 3] - '0';
   else{switch (s[i + 3]){case 'a':b = a; break;case 'b':b = b; break;case 'c':b = c; break;default:break;}}break;
  case'c':
   if (s[i + 3] >= '0'&&s[i + 3] <= '9')c = s[i + 3] - '0';
   else{switch (s[i + 3]){case 'a':c = a; break;case 'b':c = b; break;case 'c':c = c; break;default:break;}}break;
  default:break;
  }
 }
 cout << a << " " << b << " " << c;
 return 0;
}

总结:注意输入的字符串长度没有明确限制,所以应该用循环写。一定要考虑到所有的情况

你可能感兴趣的:(#,洛谷)