80分求大佬们改进

P1307 [NOIP2011 普及组] 数字反转

杰杰 @ 2018-01-02 20:23:28

#include<bits/stdc++.h>
using namespace std;
int ans[15];
main()
{
    int a;
    cin>>a;
    if(a<0)
    {
        a=0-a;
        cout<<"-";
    }
    if(a%10==0)
    {
        a=a/10;
    }
    int c=a,b=1;
    while(c>10)
    {
        c=c/10;
        b++;
    }
    for(int i=0;i<b;i++)
    {
        if(b==1)
        {
            ans[i]=a;
        }
        else
        {
            ans[i]=a-a/10*10;
            a=a/10;
            if(a<10)
            {
                ans[i+1]=a;
                break;
            }
        }
    }
    for(int j=0;j<b;j++)
    {
        cout<<ans[j];
    }
    return 0;
}

by si_zhong @ 2018-01-02 21:38:06

来了,我来救你了。


by si_zhong @ 2018-01-02 21:40:15

我用的C语言不过也差不多啦!

#include <stdio.h>
#include <string.h>
int n[99999]= {0},c=0,f=0;
char nn[99999];
int main () {
    gets(nn);
    c=strlen(nn);
    for(int i=0; i<=c-1; i++) {
        n[i]=nn[i]-48;
    }
    if(n[0]+48=='-') {
        printf("-");
        for(int i=c-1; i>=1; i--) {
            if(n[i]==0) {
                for(int j=i; j<=c-1; j++) {
                    if(n[j]!=0) {
                        f++;
                    }
                }
                if(f==0) {
                    f=0;
                    continue;
                } else {
                    f=0;
                }
            }
            printf("%d",n[i]);
        }
    } else {
        for(int i=c-1; i>=0; i--) {
            if(n[i]==0) {
                for(int j=i; j<=c-1; j++) {
                    if(n[j]!=0) {
                        f++;
                    }
                }
                if(f==0) {
                    f=0;
                    continue;
                } else {
                    f=0;
                }
            }
            printf("%d",n[i]);
        }
    }
    return 0;
}

以上为AC代码。 很简单啊!分情况做就好了,用数组的思想就好。


by applese @ 2018-02-09 10:27:56

@杰杰 要考虑-950000的结果


by mengyuan @ 2018-02-19 16:53:57

include<iostream>

using namespace std; int main() { int n,s=0; cin>>n; while(n!=0) { s=s*10+n%10; n/=10; } cout<<s<<endl; return 0; } 其实可以换个思路,这样更简单,而且不容易错!


|