m0_73080662 2022-11-03 11:31 采纳率: 83.3%
浏览 88
已结题

设计函数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,非常疑惑

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

  • 写回答

6条回答 默认 最新

  • CSDN专家-sinJack 2022-11-03 11:40
    关注
    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;
       }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(5条)

报告相同问题?

问题事件

  • 系统已结题 11月11日
  • 已采纳回答 11月3日
  • 赞助了问题酬金15元 11月3日
  • 修改了问题 11月3日
  • 展开全部

悬赏问题

  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分