c++题目描述 一串长度不超过 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
时间: 2024-04-16 21:26:52 浏览: 96
你可以使用以下的C++代码来解决这个问题:
```cpp
#include <iostream>
#include <string>
#include <unordered_map>
using namespace std;
unordered_map<char, int> variables;
void evaluateExpression(const string& expression) {
// 解析赋值语句并更新变量值
char variable = expression[0];
char value = expression[4];
if (isdigit(value)) {
variables[variable] = value - '0';
} else {
variables[variable] = variables[value];
}
}
int main() {
string code;
getline(cin, code);
// 解析PASCAL代码
string expression;
for (char c : code) {
if (c == ';') {
evaluateExpression(expression);
expression = "";
} else {
expression += c;
}
}
// 输出a、b、c的最终值
cout << variables['a'] << " " << variables['b'] << " " << variables['c'] << endl;
return 0;
}
```
你可以将输入的PASCAL代码保存到 `code` 字符串中。然后,通过解析每个赋值语句,更新变量 `a`、`b`、`c` 的值。最后,输出它们的最终值。
注意,我们使用了 `unordered_map<char, int>` 来保存变量和相应的值。在解析赋值语句时,我们使用了字符串的索引来获取变量和值,并更新 `variables` 中对应变量的值。
例如,对于输入 `a:=3;b:=4;c:=5;`,输出将为 `3 4 5`。
阅读全文