[模拟字符串] [洛谷] P1597 语句解析

输入字符串s 

int一个指示下标从前往后读 

如果是s[i]是a a=a[i+3]

a[i+3]可能是数字也可能是字母 所以要具体判断

每次赋值后指示下标加4 

为什么呢 a=b;c=a;

举个例子 下标加一可能读到b 再赋值 b= “=“明显不对

加四是从引号开始判 c=a;

上代码

#include <iostream>
using namespace std;
int main()
{
    int a=0,b=0,c=0;
    string s;
    cin>>s;
    for(int i=0;i<s.length();i++)
    {
        if(s[i]=='a')
        {
            if(s[i+3]>='0'&&s[i+3]<='9')//s[i+3]为数字
                a=s[i+3]-'0';
            else if(s[i+3]=='b')//s[i+3]为字母 下同
                a=b;
            else if(s[i+3]=='c')
                a=c;
            i+=4;//避免读到非被赋值字母
        }
        else if(s[i]=='b')
        {
            if(s[i+3]>='0'&&s[i+3]<='9')
                b=s[i+3]-'0';
            else if(s[i+3]=='a')
                b=a;
            else if(s[i+3]=='c')
                b=c;
            i+=4;
        }
        else if(s[i]=='c')
        {
            if(s[i+3]>='0'&&s[i+3]<='9')
                c=s[i+3]-'0';
            else if(s[i+3]=='b')
                c=b;
            else if(s[i+3]=='a')
                c=a;
            i+=4;
        }
    }
    cout<<a<<' '<<b<<' '<<c<<endl;
    return 0;
}
原文地址:https://www.cnblogs.com/zeolim/p/12270803.html