为什么输出不出来啊

P1307 [NOIP2011 普及组] 数字反转

昊轩啥也不是 @ 2021-08-11 14:40:00

#include<bits/stdc++.h>
using namespace std;
int main(){
    string s,s1;
    int i,len=0;
    scanf("%s",&s);
    if(s[0]=='-'){
        cout<<"-";
        for(i=s.length()-1;i>=1;i--){
        s1[len]=s[i];
        len++;
        }
        int ans=0;
        for(i=1;i<len;i++){
            if(s1[i]!='0'){
                ans=i;
                break;
            }
        }
        for(i=ans;i<len;i++)
        cout<<s1[i];
    }
    else{
    for(i=s.length()-1;i>=0;i--){
        s1[len]=s[i];
        len++;
        }
        int ans=0;
        for(i=0;i<len;i++){
            if(s1[i]!='0'){
                ans=i;
                break;
            }
        }
        for(i=ans;i<len;i++)
        cout<<s1[i];
    }
    return 0;
}

by 小小小蒟蒻 @ 2021-08-11 14:42:03

数字反转似乎并不要如此复杂


by 小小小蒟蒻 @ 2021-08-11 14:50:32

@LHX20071218 输入如果是%s,就不要在后面加&了,会RE的。

例:

下面这个是正确的。

scanf("%s", kkknb);

而这个是错误的。


scanf("%s", &kkknb);

by 昊轩啥也不是 @ 2021-08-11 14:51:16

@小小小蒟蒻 我觉得我的代码很简单啊,为啥输出不出来啊


by 昊轩啥也不是 @ 2021-08-11 14:52:49

@小小小蒟蒻 但这样我这里显示错误啊


by 小小小蒟蒻 @ 2021-08-11 14:52:55

@LHX20071218

参数列表是变量才用取地址符(&),但是如果是字符串形式,它的数组名就表示首字符的地址,因此直接用数组名就可以,不需要取地址符。


by 小小小蒟蒻 @ 2021-08-11 14:53:52

所以你的代码第六行的输入s,就不要写&s了,把&去掉


by 小小小蒟蒻 @ 2021-08-11 14:54:23

qwq卖个萌


by 昊轩啥也不是 @ 2021-08-11 14:55:24

@小小小蒟蒻 但是去了就显示是错的,还说[Error] cannot pass objects of non-trivially-copyable type 'std::string {aka class std::basic_string<char>}' through '...'


by 小小小蒟蒻 @ 2021-08-11 14:58:40

@LHX20071218 那……那你改成cin得了qwq


by 昊轩啥也不是 @ 2021-08-11 15:01:02

@小小小蒟蒻 cin还真就行了。。。。。。


|