洛谷 P5705:数字反转 ← string 类型
【题目来源】
https://www.luogu.com.cn/problem/P5705
【题目描述】
输入一个不小于 100 且小于 1000,同时包括小数点后一位的一个浮点数,例如 123.4 ,要求把这个数字翻转过来,变成 4.321 并输出。
【输入格式】
一行一个浮点数
【输出格式】
一行一个浮点数
【输入样例】
123.4
【输出样例】
123.4
【算法分析】
● 本题为字符串 string 的经典习题。
● 在 C++ 中,字符串(string)可以视为字符(char)数组。若设字符串为 s,则 s 中的每个元素可通过 s[0]~s[s.size()-1] 得到。
● 在 C++ 中,字符串(string)的长度,可以利用 size() 函数得到。
【算法代码一】
#include <bits/stdc++.h>
using namespace std;string s;int main() {cin>>s;for(int i=s.size()-1; i>=0; i--) {cout<<s[i];}return 0;
}/*
in:
123.4out:
4.321
*/
【算法代码二】
由于输入是包含一位小数的浮点数,所以可将其乘以 10 后赋给一个 int 型的变量,得到一个整数。之后,循环利用求余(%)及整除(/)便可实现原数的逆序输出。由于存在输出一个小数点的问题,所以用 if 特判一下便可。
#include <bits/stdc++.h>
using namespace std;int flag=0;int main() {float x;cin>>x;int t=x*10;while(t) {cout<<t%10;if(flag==0) {cout<<".";flag=1;}t/=10;}return 0;
}/*
in:123.4
out:4.123
*/
【参考文献】
https://www.luogu.com.cn/problem/solution/P5705