请问可以用scanf("%lld.", &num)吗

P1449 后缀表达式

hzy1721 @ 2021-05-07 22:12:51

本地是可以过样例的,但是提交后样例都过不了,是scanf的问题吗?

#include <cstdio>
#include <stack>

using namespace std;

stack<long long> S;

int main()
{
    long long num;
    char op;
    while (true) {
        if (scanf("%lld.", &num) == 1) {
            // printf("num: %lld\n", num);
            S.push(num);
        } else if (scanf("%c", &op) == 1) {
            // printf("op: %c\n", op);
            if (op == '@')
                break;
            if (op != '+' && op != '-' && op != '*' && op != '/')
                continue;
            long long n1, n2, res;
            n2 = S.top();
            S.pop();
            n1 = S.top();
            S.pop();
            if (op == '+')
                res = n1 + n2;
            else if (op == '-')
                res = n1 - n2;
            else if (op == '*')
                res = n1 * n2;
            else if (op == '/')
                res = n1 / n2;
            S.push(res);
        }
    }
    printf("%lld\n", S.top());
    return 0;
}

by FunnyCreatress @ 2021-05-07 22:19:02

%c是个玄学的东西,不要用吧


by JJA_ @ 2021-05-07 22:21:19

@hzy1721 ch字符用cin比较好,%c过于玄学(也可能是我不会用?(


by Masna_Kimoyo @ 2021-05-07 22:31:21

%c玄学石锤了

与其差不多的还有puts,getline,getchar之类的东西

反正都很玄学,所以cin,cout是最好的


by 约瑟夫用脑玩 @ 2021-05-07 22:38:53

长期使用 fread 版 getchar 的人打出了问号???

楼上的怕是没遭受过毒瘤的毒打,建议直接用 getchar,基本不出锅,最多难写一点


by hzy1721 @ 2021-05-07 22:39:21

改成getchar通过了,谢谢各位大佬


by Masna_Kimoyo @ 2021-05-07 22:41:51

@约瑟夫用脑玩 对不起对不起,冒犯了

不过我不是那个意思

我用getchar也用的比较多,就是有的时候读入字符容易莫名挂,所以这么说。

只是建议萌新少用,cin,cout更友好一些/kk


by 约瑟夫用脑玩 @ 2021-05-07 22:52:14

没说什么,也只是建议用 getchar 而已。。。

@kevin320


|