30分求助大佬,末尾带0的都输出不了,求帮助

P1307 [NOIP2011 普及组] 数字反转

MW6776 @ 2023-02-13 13:22:23


#include <stdio.h>
#include <string.h>
int main(){
    char a[12]={};
    int n;
    gets(a);
    int m=strlen(a)-1;
    if(strlen(a)==1&&a[0]=='0'){
        printf("0");
    }
    else{
        if(a[0]=='-'){
        a[0]='\n';
        printf("-");
    }
    for (n=strlen(a)-1;n>=0;n--){
        if (a[m]=='0'){
            continue;
        }
        printf("%c",a[n]);
    }
    }
    return 0;
} 

by dongwenteng10 @ 2023-02-13 13:37:45

括号乱了。。。

这是我用字符串写的

#include <bits/stdc++.h>
using namespace std;
char s[15];
int main(){
    int len,a=0,flag=1,begin=0;
    cin>>s;
    len=strlen(s);
    if(s[0]=='0'){
        cout<<0;
        return 0;
    }
    if(s[0]=='-'){
        flag=0;
        begin=1;
    }
    while(1){
        if(s[len-1]=='0') len--;
        else break;
    }
    if(flag==0) cout<<"-";
    for(int i=len-1;i>=begin;i--){
        cout<<s[i];
    }
    return 0;
}

但是不用可以很简单

#include <bits/stdc++.h>
using namespace std;
int main(){
    int n,ans=0;
    cin>>n;
    while(n)
    {
        ans=ans*10+n%10;
        n=n/10;
    }
    cout<<ans;
    return 0;
}

希望对你有帮助


by MW6776 @ 2023-02-13 16:23:43

@dongwenteng10 okok 谢谢大佬的思路,我的是因为括号乱了输出有问题吗?因为一直修改,可能括号没对齐。。。


by dongwenteng10 @ 2023-02-14 13:17:06

a[m]=='0'

是这句,如果末尾是0就会一直执行continue而没有输出,应改为

a[i]=='0';

还有,我不是大佬,我很蒻


|