14.语句解析
题目:
代码:
c++
include
using namespace std;
/*
*/
int main(){
string s;
getline(cin,s);
map
q[‘a’] = ‘0’;
q[‘b’] = ‘0’;
q[‘c’] = ‘0’;
for(int i = 0; i
q[s[i - 2]] = q[s[i + 1]];
}
else{
q[s[i - 2]] = s[i + 1];
}
}
}
cout<<q[‘a’]<<” “<<q[‘b’]<<” “<<q[‘c’]<<endl;
return 0;
}
法二:
include
using namespace std;
int a[3];char s1,s2;
int main()
{
while (scanf(“%c:=%c;”,&s1,&s2)==2)//
a[s1-‘a’]=s2>=’0’ && s2<=’9’ ? s2-‘0’ : a[s2-‘a’]; //赋值语句简洁明了
printf(“%d %d %d”,a[0],a[1],a[2]);
}
c语言
include
include
int main(){
int a[3] = {0};
char s1,s2;
while(scanf(“%c:=%c;”,&s1,&s2) == 2){
a[s1 - ‘a’] = s2 >= ‘0’ && s2 <= ‘9’ ? s2 - ‘0’ : a[s2 - ‘a’];
}
printf(“%d %d %d”,a[0],a[1],a[2]);
return 0;
}
知识点:
1.scanf(“%c:=%c;”,&s1,&s2)==2
这行代码的格式字符串 “%c:=%c;” 包含以下几个部分:
%c:这是一个格式说明符,告诉 scanf 读取一个字符并将其存储在提供的地址(&s1)。
:=:这是普通的字符,scanf 会从输入中读取这两个字符,但不会将它们存储在任何地方。它们在这里的作用是确保输入中包含这两个字符。
%c:这是另一个格式说明符,告诉 scanf 读取一个字符并将其存储在提供的地址(&s2)。
;:这是普通的字符,scanf 会从输入中读取这个字符,但不会将其存储在任何地方。它在这里的作用是确保输入以分号结束。
scanf 函数返回成功匹配的输入项的数量。在这个例子中,格式字符串期望两个字符(由 %c 指定),所以如果输入正确,scanf 应该返回 2。这个返回值然后与 2 进行比较,以确保两个字符都已成功读取。