输出格式有一点问题

P1307 [NOIP2011 普及组] 数字反转

S飞速黑鱼崽B @ 2021-08-05 15:24:52

为啥输出的数字前面会有一堆空格,长度跟我开的数组一样,如果负数的话是“-(空格,空格,空格……)数字”这样的。下面是代码

#include<bits/stdc++.h>
using namespace std;
#define MAXN 15
int main() {
    char c[MAXN] = {0};
    cin >> c;
    bool p = 1;
    if (c[0] == '-') {
        cout << "-";
        for (int i = MAXN - 1;i > 0;i--) {
            if (c[i] == '0' && p) {
                continue;
            } else {
                cout << c[i];
                p = 0;
            }
        }
    } else {
        for (int i = MAXN - 1;i >= 0;i--) {
            if (c[i] == '0' && p) {
                continue;
            } else {
                cout << c[i];
                p = 0;
            }
        }
    }
    return 0;
}

by comcopy @ 2021-08-05 15:31:22

大括号0是只有c[0]变成0

要初始化的话用memset或者for解决吧


by comcopy @ 2021-08-05 15:31:33

@S飞速黑鱼崽B


by Icedpiggy @ 2021-08-05 15:35:11

'0'==48


by Icedpiggy @ 2021-08-05 15:40:11

把你所有的c[i] == '0'

改为!('1'<=c[i]&&c[i]<='9')


by Icedpiggy @ 2021-08-05 15:42:54

并且 加 特 判

如果输入0,则要输出0


by Icedpiggy @ 2021-08-05 15:44:22

@S飞速黑鱼崽B


by S飞速黑鱼崽B @ 2021-08-05 16:24:26

@Icedpiggy 这个应该是对的,判断‘0’==‘0’是可以的, 输入到char里面0会变成‘0’的


by S飞速黑鱼崽B @ 2021-08-05 16:46:55

@comcopy 我试了一下,确实是这样的。但还是遇到一堆问题,还是直接用string好


by comcopy @ 2021-08-05 17:01:20

@S飞速黑鱼崽B 其实你可以直接把数组放到外面,用strlen判断长度逆序输出就行了

c的长度就是strlen(c)

循环就从strlen(c)-1开始到0就行了


by comcopy @ 2021-08-05 17:08:02

而且用long long 加两个特判就能过(?)


| 下一页