70分c++求助

P1307 [NOIP2011 普及组] 数字反转

@[zhaoyuhang1231](/user/1011497) 代码都没给完整
by cool_xu @ 2023-08-13 13:24:56


@[cool_xu](/user/937661) ?
by Max6700 @ 2023-08-13 13:26:38


@[zhaoyuhang1231](/user/1011497) $gets$ 函数有缺陷的,尽量不要去使用 $gets$,这道题按我的思路变量全都要开 $long long$,变量定义大点也好 $gets()$ 函数存在⼀个严重的缺陷,这个缺陷就是:它不会检查数组是否能够装的下输⼊⾏ $gets$ 函数没有限制它所读取长度,程序员应该保证 $buffer$ 有足够的空间,否则 $buffer$ 可能无法容纳 $gets$ 所读取的内容,从而导致堆栈溢出。如果溢出,多出来的字符将被写入到堆栈中,这就覆盖了堆栈原先的内容,破坏一个或多个不相关变量的值。 ###### 如下图(溢出) ![](https://img-blog.csdn.net/20140419173926312?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY19iYXNlX2ppbg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
by keinog @ 2023-08-13 13:28:02


@[zhaoyuhang1231](/user/1011497) 特判0 ```if(s1[0]=='0')cout<<0;```
by Max6700 @ 2023-08-13 13:28:08


@[keinog](/user/1050091) ~~图炸了~~
by Max6700 @ 2023-08-13 13:28:28


@[zhaoyuhang1231](/user/1011497) 而且你的代码不太完整
by keinog @ 2023-08-13 13:28:43


@[zhaoyuhang1231](/user/1011497) 确实这边建议用```string```,直接```cin```
by Max6700 @ 2023-08-13 13:29:06


@[zhaoyuhang1231](/user/1011497) 中间如果有零不能删除的 ``` #include <bits/stdc++.h> using namespace std; char str[11]; bool un = false,unzero; int main() { gets(str); if (str[0] == '-') { un = true; } int len = strlen(str); if (un) { cout << "-"; } while (len--) { if (str[len] == '0' && unzero==false || str[len] == '-') { continue; }else{ unzero=true; }cout << str[len]; } } ```
by cool_xu @ 2023-08-13 13:29:13


@[Max6700](/user/935012) 我这里图没有炸a
by keinog @ 2023-08-13 13:29:26


C++11的main前居然不需要int?
by cool_xu @ 2023-08-13 13:30:09


| 下一页