大佬们,我这从0分改到了60 觉得没错误了,就是不让过

P1307 [NOIP2011 普及组] 数字反转

傻肥狍子 @ 2020-11-29 13:41:56

#include<stdio.h>
#include<math.h>
int p[1000000000]={0}; 
int main(void)
{
    int a,i=0,j;
    scanf("%d",&a);
    if(a>0)
    {
        while(a!=0)
     {
        p[i]=a%10;
        a=a/10;
        i++; 
     }
     for(j=0;j<i;j++)
     {
        printf("%d",p[j]);
     }
    }
    if(a<0)
    { 
    a=abs(a); 
     while(a!=0)
     {
        p[i]=a%10;
        a=a/10;
        i++; 
     }
//     printf("-");
    if(p[0]==0)
    {
        printf("-");
     for(j=0;j<i-1;j++)
     {
        printf("%d",p[j+1]);
     }
    } 
    if(p[0]!=0)
    {
     printf("-");
     for(j=0;j<i;j++)
     {
            printf("%d",p[j]);
     }
    }
   }
    return 0;
}

by xutongwei @ 2020-11-29 13:46:22

@傻肥狍子

如果末尾有一堆 0,如 -100000,会错

还有(疑似)大括号配错


by wsyhb @ 2020-11-29 13:55:57

错误列举如下:

  1. 数组开太大
**事实上,这样大的数组在不少环境下都会直接编译错误,是致命错误!** 2. 反转后出现的前导 $0$ 未处理好 对于 $N<0$ 的情况,这个程序至多只去除了一位前导 $0$,**面对多位前导 $0$ 的情况无能为力**…… 举个例子: ``` Input -2900 Output -92 实际输出 -092 ``` 对于 $N>0$ 的情况,这个程序压根没处理前导 $0$!**不能题目说“参见样例2”,你就只处理 $N<0$ 的情况呀~** 3. $0$ 未处理 这个就不用说了吧,完全没有输出~

by wsyhb @ 2020-11-29 13:57:15

@傻肥狍子


by 傻肥狍子 @ 2020-11-29 14:12:44

@wsyhb 了解,谢谢,我去改一改。


by 傻肥狍子 @ 2020-11-29 14:13:02

@xutongwei 我去改一改,谢谢。


|