• 9.3练习题4 语句解析 题解


    题目出处:洛谷P1597

    题目描述

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

    输入格式

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

    输出格式

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

    样例输入

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

    样例输出

    3 4 5
    

    问题分析

    基础模拟题。
    我们首先以一个字符串 s 来保存我们的输入。
    然后我们可以发现一个语句包括 5 个字符,形如 “X:=Y;”,其中 X 肯定是字符‘a’、‘b’、‘c’ 中的一个,而 Y 可能是 ‘a’、‘b’、‘c’ 或者数字 ‘0’ 到 ‘9’ 中的一个。
    然后分情况讨论,就能够得到 a、b、c 的值。
    实现代码如下:

    #include <bits/stdc++.h>
    using namespace std;
    string s;
    int a, b, c;
    int main() {
        cin >> s;
        int len = s.length();
        for (int i = 0; i+4 < len; i += 5) {
            char d = s[i];
            char e = s[i+3];
            int f;
            if (isdigit(e)) {
                f = e - '0';
            }
            else {
                if (e == 'a') f = a;
                else if (e == 'b') f = b;
                else f = c;
            }
            if (d == 'a') a = f;
            else if (d == 'b') b = f;
            else c = f;
        }
        printf("%d %d %d
    ", a, b, c);
        return 0;
    }
    
  • 相关阅读:
    SIEM思考
    PowerDesigner15在生成SQL时报错Generation aborted due to errors detected during the verification of the mod
    Mongo驱动
    RsysLog
    vi全局替换方法
    RPM
    hdu1195 Open the Lock (DFS)
    调制:调幅(AM)与调频(FM)
    调制:调幅(AM)与调频(FM)
    追本溯源 —— 诗词、名言
  • 原文地址:https://www.cnblogs.com/zifeiynoip/p/11570743.html
Copyright © 2020-2023  润新知