0010ss @ 2021-06-16 09:40:09
#include <cstdio>
#include <cstring>
int main(){
int n, a, b, c;
char last, s[20], ans[20];
scanf("%d\n", &n);
printf("\n");
while(n--){
fgets(s, sizeof(s), stdin);
if(s[0] == 'a' ^ s[0] == 'b' ^ s[0] == 'c'){
last = s[0], s[0] = ' ';
}
printf("%s", s);
sscanf(s, "%d %d", &a, &b);
switch(last){
case 'a': c = a + b; sprintf(ans, "%d+%d=%d", a, b, c); break;
case 'b': c = a - b; sprintf(ans, "%d-%d=%d", a, b, c); break;
case 'c': c = a * b; sprintf(ans, "%d*%d=%d", a, b, c); break;
}
printf("%s\n%d\n", ans, strlen(ans));
}
return 0;
}
这一段是深基上的代码,请问第11行中,为什么在判断符号后要把s[0]转换成空格,如下
last = s[0], s[0] = ' ';
by 阿丑 @ 2021-06-16 17:06:12
@0010ss 因为要第 13 14 行要输出 s 和输入 a,b,所以要把 s[0] 给替换掉
深基怎么写 ^
不写 |
by 阿丑 @ 2021-06-16 17:06:33
可以自己去掉这一句试一下吧(
by 0010ss @ 2021-06-16 17:43:48
@阿丑 试过啦,所以sscanf是等于输入s的前两位嘛,不是找到俩整形输入??555
by 阿丑 @ 2021-06-16 17:55:30
@0010ss 如果遇到字母的话,%d
就会炸掉
用 scanf 读也是一样的,读 %d
的时候不能有字母
by 0010ss @ 2021-06-16 18:01:24
@阿丑 okok谢啦~
我以为是能指定输入相应格式的东西哈哈哈...