SPOJ Addrev的回答不被接受

时间:2014-08-23 13:37:49

标签: c reverse

我正在尝试提交解决方案,但我得到了错误的答案,但据我说它运行正常。还有正确的代码。

我的代码

#include<stdio.h>

int rev(int num){

 int rev = 0;
 while(num>=10){
    rev = rev + num%10;
    rev=rev*10;
    num = num/10;
 }
   rev = rev + num;
}

int main(){

int T;
int  num1,num2;
scanf("%d",&T);
while(T--){     

    scanf("%d",&num1);
    scanf("%d",&num2);
    printf("%d\n",rev(rev(num1)+rev(num2)));

}

return 0;

}

虽然接受的代码是

    #include<stdio.h>
    int rev(int num)
    {
    int temp=0;
    while(num)
    {
        temp=(temp*10)+(num%10);           
        num/=10;
    }
    return temp;
    }
int main()
{
    int t;
    scanf("%d",&t);
    while(t--)
    {   int num1,num2;
        scanf("%d%d",&num1,&num2);
        printf("%d\n",rev(rev(num1)+rev(num2)));
    }
    return 0;
}

代码来自http://codegeeksblog.wordpress.com/2013/05/30/spoj-addrev/

我找不到我的代码不被接受的原因!我从法官那里得到错误的回答信息。

1 个答案:

答案 0 :(得分:1)

你应该返回这个数字,使整个函数按msandiford暗示的方式工作。

在最后一步中继续这样做......

int rev(int num){

int rev = 0;
while(num>=10){
rev = rev + num%10;
rev=rev*10;
num = num/10;
}
rev = rev + num;  
return rev;         // added a return statement.
}