求解:为什么只得了70分?

P1307 [NOIP2011 普及组] 数字反转

独一无二的S @ 2016-08-08 17:54:34

#include <iostream>
#include <cmath>
#include <cstring>
using namespace std;
int main()
{int s,j=0;
 int a[10];
 memset(a,0,sizeof(a));
 cin>>s;
 int flag=0;
 if(s>=0)
 s=s;
 if(s<0)
 {flag=1;
 s=abs(s);
 }
 for(int i=0;i<=10;i++)
 {a[i]=s%10;
 s=s/10;
 j++;
 if(s==0)
 break;
 }
 if(flag==0)
 for(int i=0;i<=j-1;i++)
   if(a[i]!=0)
    cout<<a[i];
 if(flag==1)
 {cout<<"-";
 for(int i=0;i<=j-1;i++)
   if(a[i]!=0)
    cout<<a[i];
 }
 return 0; 
}
哪位大神帮忙看看哪里出错了,为什么有三个点过不了?

by 独一无二的S @ 2016-08-09 18:39:35

p1307


by 觞羰涙 @ 2016-08-13 16:11:26

我也70


by leaves_ @ 2016-08-14 19:24:35

这里我比较建议你们使用字符数组和strlen算法

多引用<algorithm>。

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<string>
#include<algorithm>
using namespace std;
int main()
{
    char a[12];
    int b,d=0;
    scanf("%s",a);
    b=strlen(a);
    if(a[0]=='-')
    {
    printf("-");d++;
    }
    int c=b;
    while(a[b-1]=='0')
    b--;
    for(int i=b-1;i>=d;i--)
    printf("%c",a[i]);
    return 0;
}

|