70分c++求助

P1307 [NOIP2011 普及组] 数字反转

The_fisher @ 2023-08-13 13:12:07

本蒟蒻70分

大佬们,帮蒟蒻看看吧

#include <bits/stdc++.h>

using namespace std;

char str[11];
bool un = false;

main() {
    gets(str);
    if (str[0] == '-') {
        un = true;
    }
    int len = strlen(str);
    if (un) {
        cout << "-";
    }
    while (len--) {
        if (str[len] == '0' || str[len] == '-') {
            continue;
        }
        cout << str[len];
    }
}

by __xux__ @ 2023-08-13 13:24:56

@zhaoyuhang1231 代码都没给完整


by Max6700 @ 2023-08-13 13:26:38

@cool_xu ?


by keinog @ 2023-08-13 13:28:02

@zhaoyuhang1231

$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 Max6700 @ 2023-08-13 13:28:08

@zhaoyuhang1231 特判0

if(s1[0]=='0')cout<<0;


by Max6700 @ 2023-08-13 13:28:28

@keinog 图炸了


by keinog @ 2023-08-13 13:28:43

@zhaoyuhang1231 而且你的代码不太完整


by Max6700 @ 2023-08-13 13:29:06

@zhaoyuhang1231 确实这边建议用string,直接cin


by __xux__ @ 2023-08-13 13:29:13

@zhaoyuhang1231

中间如果有零不能删除的

#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 keinog @ 2023-08-13 13:29:26

@Max6700 我这里图没有炸a


by __xux__ @ 2023-08-13 13:30:09

C++11的main前居然不需要int?


| 下一页