题解:洛谷 P5705 【深基2.例7】数字反转

【题目来源】

洛谷:P5705 【深基2.例7】数字反转 - 洛谷

【题目描述】

输入一个不小于 \(100\) 且小于 \(1000\),同时包括小数点后一位的一个浮点数,例如 \(123.4\) ,要求把这个数字翻转过来,变成 \(4.321\) 并输出。

【输入】

一行一个浮点数

【输出】

一行一个浮点数

【输入样例】

123.4

【输出样例】

4.321

【算法标签】

《洛谷 P5705 数字反转》 #模拟#

【代码详解】

#include <bits/stdc++.h>  // 包含标准库头文件(万能头文件)
using namespace std;      // 使用标准命名空间

/**
 * 主函数 - 程序入口
 * @return 程序执行状态码(0表示成功)
 */
int main()
{
    double t, ans;        // 定义双精度浮点数变量:原始值t,结果ans
    int s1, s2;           // 定义整型变量:中间值s1,重组值s2
    int ge, shi, bai, qian; // 定义各位数字变量:个、十、百、千位

    cin >> t;             // 从标准输入读取原始数值t

    // 数值转换处理
    s1 = t * 10;          // 将输入值放大10倍转为整数(保留1位小数精度)
    
    // 分解各位数字
    ge = s1 % 10;         // 获取个位数(原数第1位小数)
    shi = s1 / 10 % 10;   // 获取十位数(原数个位)
    bai = s1 / 100 % 10;  // 获取百位数(原数十位)
    qian = s1 / 1000 % 10;// 获取千位数(原数百位)

    // 数字重组(逆序排列)
    s2 = ge * 1000 + shi * 100 + bai * 10 + qian; // 将各位数字按新顺序组合

    // 结果处理
    ans = s2 / 1000.0;    // 将重组后的数缩小1000倍转为浮点数(保留3位小数)

    cout << ans;          // 输出最终结果
    return 0;             // 返回程序执行成功状态码
}

【运行结果】

123.4
4.321
posted @ 2026-02-16 07:52  团爸讲算法  阅读(29)  评论(0)    收藏  举报