设计函数int reverseNum(int n)

说明下哈,我已经知道简单写法,但我想知道这个的错误在哪里,不用提供那个简单的多的方法了,只要挑错,感谢!

设计函数int reverseNum(int n),返回正整数n反转后的形式,如reverseNum(12345)的值为54321。

输入与输出要求:
输入一个正整数n,n的取值范围不会超过int类型变量,n不会有前导0,n的结尾也不会有0。输出该正整数的反转形式,输出如“The reverse form of number 12345 is 54321.”,占一行。

用代码块功能插入代码,请勿粘贴截图
int reverseNum(int n)
{
      int sum = 0;  
    int i,j,r,a;
 long long m =10;
    int n2=n;
 for (i=1;n!=0;)
 { n=n/m;
  if(n!=0)  
  {i++;} }

  while(n2>0)
  {  r=n2%10;
    n2=n2/10;
   for(j=i;j>=1;j--)
   {  a=r;
      a*=10;
    if (j==1){ a=r;}
    
    // a=r*10;   
   }
   i=i-1;
  sum+=a;

  }
    return sum;
}

运行结果及报错内容 返回值是15,相当于每个数都进行了我循环里的if,5+4+3+2+1了,但去掉这句话,会是150,也就是每一个数都只乘了一次10,非常疑惑

我已经知道简单写法,但我想知道这个的错误在哪里,不用提供那个简单的多的方法了,只要挑错,感谢!

for(j=i;j>=1;j--)
   {  a=r;
      a*=10;
    if (j==1){ a=r;}
   }

问题在这里,执行for时,最后肯定会满足if条件,导致a=r
for循环中的if是不需要的,去掉,并且将a=r放在for上面

 a=r;
   for(j=i;j>=1;j--)
   {
    a*=10;
   }

我来帮你找错

逻辑太复杂了
int sun = 0;
while(n)
{
sum = sum * 10 + n%10;
n/=10;}
return sum;
这样就可以了

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632

您好,刚刚看了一下您的代码,大胆的推测了您的编程思路:
1.您第一个for循环的i为了得到输入n的总位数,如12345,i=5;
2.while循环实现了个位数的取出以及n的不断左移,实现对个位数的不断取出且最终保存到变量a,while里面for循环的*10并没有起效果,应该把取出来的a放在for循环上面,您代码里只是让取出来的a与sum进行了相加,以致最终的结果为sum=0+5+4+3+2+1=15,作为函数的输出。

思路挺好的,就是在取出的个位数通过每次循环乘以10,再相加。