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

设计函数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 stm32代码移植没反应
  • ¥15 matlab基于pde算法图像修复,为什么只能对示例图像有效
  • ¥100 连续两帧图像高速减法
  • ¥15 组策略中的计算机配置策略无法下发
  • ¥15 如何绘制动力学系统的相图
  • ¥15 对接wps接口实现获取元数据
  • ¥20 给自己本科IT专业毕业的妹m找个实习工作
  • ¥15 用友U8:向一个无法连接的网络尝试了一个套接字操作,如何解决?
  • ¥30 我的代码按理说完成了模型的搭建、训练、验证测试等工作(标签-网络|关键词-变化检测)