0
点赞
收藏
分享

微信扫一扫

洛谷——P1597 语句解析(两种解法)


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

解法一:

using namespace std;
int main(){
int a=0,b=0,c=0;
char s[256];
cin>>s;
int len=strlen(s);
for(int i=0;i<len;i++){
if(s[i]=='a'){
if(s[i+3]=='a') a=a;
else if(s[i+3]=='b') a=b;
else if(s[i+3]=='c') a=c;
else a=s[i+3]-'0';
}

if(s[i]=='b'){
if(s[i+3]=='a') b=a;
else if(s[i+3]=='b') b=b;
else if(s[i+3]=='c') b=c;
else b=s[i+3]-'0';
}

if(s[i]=='c'){
if(s[i+3]=='a') c=a;
else if(s[i+3]=='b') c=b;
else if(s[i+3]=='c') c=c;
else c=s[i+3]-'0';
}
}
cout<<a<<" "<<b<<" "<<c;
return 0;

}

解法二:

#include<cstdio>
using namespace std;
int a[3];char s1,s2;
int main()
{
while (scanf("%c:=%c;",&s1,&s2)==2)//充分利用c++语言优势
a[s1-'a']=s2>='0' && s2<='9' ? s2-'0' : a[s2-'a']; //赋值语句简洁明了
printf("%d %d %d",a[0],a[1],a[2]);
}


举报

相关推荐

0 条评论