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 加两个特判就能过(?)