TB椰程 TypeBuddy 打字搭子

语句解析

洛谷·深入浅出 · 代码 · cpp · 难度 2/5 · 共 666 字

解析只有 a/b/c 三种变量的赋值语句

  • 洛谷
  • 练习

正文

// 原题:https://oj.yecheng.tv/p/1427
// 题意:一串 PASCAL 风格的赋值语句(a:=数字或变量;),求最终 a、b、c 的值(未赋值默认为 0)。
// 思路:扫描串,遇到「变量:=」,右边是数字就直接赋值,是字母就取对应变量的值。
// 复杂度:O(n)。
// 易错点:右边可能是另一个变量;未赋值的变量初值为 0。
#include <iostream>
#include <string>
using namespace std;
int main(){
    string s;
    getline(cin, s);
    int v[3] = {0};
    for(int i = 0; i < s.size(); ){
        char lhs = s[i];
        int j = i + 3;
        char rhs = s[j];
        if(rhs >= '0' && rhs <= '9') v[lhs - 'a'] = rhs - '0';
        else v[lhs - 'a'] = v[rhs - 'a'];
        while(j < s.size() && s[j] != ';') j++;
        i = j + 1;
    }
    cout << v[0] << " " << v[1] << " " << v[2] << endl;
    return 0;
}

洛谷·深入浅出的其它内容

打字首页 · 词库画廊 · 编程打字 · 指法入门 · 天梯榜 · 数据分析 · 班级课堂 · 关于我们
椰程 TypeBuddy 打字搭子 —— 键盘指法练习 · 单词记忆 · 班级课堂 · 在线 PK