洛谷-P1597 语句解析

洛谷-P1597 语句解析

原题链接:https://www.luogu.com.cn/problem/P1597


题目背景

木有背景……

题目描述

一串长度不超过 255 的 PASCAL 语言代码,只有 a,b,c 3 个变量,而且只有赋值语句,赋值只能是一个一位的数字或一个变量,每条赋值语句的格式是 [变量]:=[变量或一位整数];。未赋值的变量值为 0输出 a、b、c 的值。

输入格式

一串(<255)PASCAL语言,只有a,b,c 3个变量,而且只有赋值语句,赋值只能是一个一位的数字或一个变量,未赋值的变量值为0。

输出格式

输出a,b,c 最终的值。

输入输出样例

输入 #1

a:=3;b:=4;c:=5;

输出 #1

3 4 5

C++代码

#include <iostream>
#include <cstring>
using namespace std;

int main() {
    int a, b, c;
    string s;
    cin >> s;
    a = b = c = 0;
    for (int i=0; i<s.size(); ++i)
        if (s[i+1] == ':' && s[i+2] == '=')
            if (s[i] == 'a') {
                if (s[i+3] >= '0' && s[i+3] <= '9')
                    a = s[i+3] - '0';
                else if (s[i+3] == 'b')
                    a = b;
                else if (s[i+3] == 'c')
                    a = c;
            }
            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;
            }
            else if (s[i] == 'c') {
                if (s[i+3] >= '0' && s[i+3] <= '9')
                    c = s[i+3] - '0';
                else if (s[i+3] == 'a')
                    c = a;
                else if (s[i+3] == 'b')
                    c = b;
            }
    cout << a << ' ' << b << ' ' << c << endl;
    return 0;
}
原文地址:https://www.cnblogs.com/yuzec/p/13388932.html