nobugdebug 2023-01-18 04:22 采纳率: 92.7%
浏览 67
已结题

c语言。输出该整数对应的反向数。

从键盘上输入一整数(int范围内),输出该整数对应的反向数。

比如输入3486,则输 出6843。
请注意,输出的6843是一个数,不能只是将每个位上的数字打印出。

如果输入数字以0结 束,则反向数不需要输出前导0。
输入格式:"%d" 输出格式:"%d"
程序运行结果示例1:
输入:20220115
输出:51102202
程序运行结果示例2:
输入:150
输出:51

while(n)<-这里n是在干嘛?
{
s = s * 10 + n % 10; <-这里的算法又是在干嘛???
n/=10;
}

可以详细解答一下代码的意思吗?


#include<stdio.h>
int main()
{
    int n;
    int s = 0;
    scanf("%d",&n);
    while(n)                          //(n)?
    {
        s = s * 10 + n % 10;          //为什么??这是在干嘛?
        n/=10;
    }
    printf("%d",s);
    return 0;
}

  • 写回答

5条回答 默认 最新

  • lidiyscrp 2023-01-18 08:48
    关注

    欢迎采纳,这段代码的功能是将给定的数字 n 翻转过来,比如 n 是 1234,那么最终的输出 s 就会是 4321。为什么要使用这行代码 s = s * 10 + n % 10 ?因为%运算得到的是余数,当n的值不断除以10,余数就是每一位上的数字,乘以10则可以实现数字翻转。
    举个1234例子
    如果给定的数字是1234,最初 s 等于 0( s=0),所以 n % 10 结果是 4,然后将 n%10 的结果加到 s 上,即 s = 0 + 4,此时 s 的值为4。接着,n 除以10,就变成了 123,此时,n % 10 结果是 3,将 n % 10 的结果再加到s上,即 s = 4 * 10 + 3,此时 s 的值为43。在继续循环直到 n 变为 0,即可得到最终的结果 s = 4321,也就是翻转后的结果。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 2月21日
  • 已采纳回答 2月13日
  • 创建了问题 1月18日

悬赏问题

  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 软件测试决策法疑问求解答
  • ¥15 win11 23H2删除推荐的项目,支持注册表等
  • ¥15 matlab 用yalmip搭建模型,cplex求解,线性化处理的方法
  • ¥15 qt6.6.3 基于百度云的语音识别 不会改
  • ¥15 关于#目标检测#的问题:大概就是类似后台自动检测某下架商品的库存,在他监测到该商品上架并且可以购买的瞬间点击立即购买下单
  • ¥15 神经网络怎么把隐含层变量融合到损失函数中?
  • ¥15 lingo18勾选global solver求解使用的算法
  • ¥15 全部备份安卓app数据包括密码,可以复制到另一手机上运行
  • ¥20 测距传感器数据手册i2c