P1597 语句解析
题目背景
木有背景……
题目描述
一串长度不超过 255 255 255 的 PASCAL 语言代码,只有 a , b , c a,b,c a,b,c 三个变量,而且只有赋值语句,赋值只能是一个一位的数字或一个变量,每条赋值语句的格式是 [变量]:=[变量或一位整数];
。未赋值的变量值为 0 0 0 输出 a , b , c a,b,c a,b,c 的值。
输入格式
一串符合语法的 PASCAL 语言,只有 a , b , c a,b,c a,b,c 三个变量,而且只有赋值语句,赋值只能是一个一位的数字或一个变量,未赋值的变量值为 0 0 0。
输出格式
输出 a , b , c a,b,c a,b,c 最终的值。
样例 #1
样例输入 #1
a:=3;b:=4;c:=5;
样例输出 #1
3 4 5
提示
输入的 PASCAL 语言长度不超过 255 255 255。
1.题目分析
输入一段代码,分析并输出定义的变量的值,可以是数字和已经定义的变量,未定义的变量初始化为0.
2.题目分析
循环输入的字符串,判断a,b,c三个字符的位置,如果是a,b,c三个字符,就再进行判断,判断是数字还是变量,这个是一个坑点。
如果是数字,直接赋值给对应的字符即可。如果是变量的话,则需要将对应的变量值赋给当前字符对应的变量。
3.代码实现
#include <stdio.h>
#include <string.h>
int main(){int a = 0,b = 0,c = 0;char ch[255];scanf("%s",ch);for (int i = 0; i < strlen(ch); ++i) {if (ch[i] == 'a'){//数字的情况if (ch[i+3] >= '0' && ch[i+3] <='9'){a = ch[i+3] - 48;}//变量的情况if (ch[i+3] == 'a'){a = a;} else if (ch[i+3] == 'b'){a = b;} else if (ch[i+3] == 'c'){a= c;}}if (ch[i] == 'b'){//数字的情况if (ch[i+3] >= '0' && ch[i+3] <='9'){b = ch[i+3] - 48;}//变量的情况if (ch[i+3] == 'a'){b = a;} else if (ch[i+3] == 'b'){b = b;} else if (ch[i+3] == 'c'){b= c;}}if (ch[i] == 'c'){//数字的情况if (ch[i+3] >= '0' && ch[i+3] <='9'){c = ch[i+3] - 48;}//变量的情况if (ch[i+3] == 'a'){c = a;} else if (ch[i+3] == 'b'){c = b;} else if (ch[i+3] == 'c'){c= c;}}}printf("%d %d %d",a,b,c);return 0;
}