题解:洛谷 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
浙公网安备 33010602011771号