求问

P1957 口算练习题

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谢啦~

我以为是能指定输入相应格式的东西哈哈哈...


|