18 条题解
-
4
解析
输入一个浮点数n,将这个浮点数,反着输出。
其中,这个浮点数n整数部分有三位,且只带有一位小数,所以可以对这个浮点数n乘以10,消除小数部分,让他变成一个四位数,这样就可以用
数位分离
的方法,分离每一位数。易错点
%运算符
不能对浮点数取余题解
#include <iostream> using namespace std; int main() { double x; int a; cin >> x; a = x * 10; int ge = a % 10; int shi = a / 10 % 10; int bai = a / 100 % 10; int qian = a / 1000; cout << ge << "." << shi << bai << qian; return 0; }
-
1
题解
思路:
这道题看着有点难,实际
有点难上只要转变一下思路就可以解决了,从py转过来的童鞋,第一个想到的就是字符串切片,对吧,但是这里是C++,我们还没学字符串呢!所以,我们不妨将它变成整数,然后用课堂上所学的知识获得它的每一位数(仅适用于确定几位的小数,题目是一位小数,可以用这种方法)
偷懒简化(是的没错,今天没有简化,只有注意事项)注意!输入的数字化成整数后,不能直接%运算
否则将出现错误:[Error] invalid operands of types 'double' and 'int' to binary 'operator%'
参考
die代码:#include <iostream> using namespace std; int main() { double a; int b; int ge, shi, bai, qian; cin >> a; b = a * 10; ge = b % 10; shi = b / 10 % 10; bai = b / 100 % 10; qian = b / 1000; cout << ge << "." << shi << bai << qian << endl; return 0; }
-
0
题解 c++
#include <bits/stdc++.h> //hetao4040809 using namespace std; int main() { float x; long long a; cin >> x; a = x * 10; long long ge = a % 10; long long shi = a / 10 % 10; long long bai = a / 100 % 10; long long qian = a / 1000; cout << ge << "." << shi << bai << qian; return 0; }
-
0
#include <iostream> #include <string> #include <algorithm> using namespace std; int main() { string str; cin >> str; // 分离整数和小数部分 int dotPos = str.find("."); string intPart = str.substr(0, dotPos); string decPart = str.substr(dotPos + 1); // 反转整数和小数部分 reverse(intPart.begin(), intPart.end()); reverse(decPart.begin(), decPart.end()); // 拼接成新的数字并输出 cout << stod(decPart + "." + intPart) << endl; return 0; }
程序运行原理如下:
- 首先使用标准输入流 cin 读取用户输入的一个字符串 str;
- 用 find 函数找到字符串中小数点所在的位置,将整数部分和小数部分分别保存到字符串 intPart 和 decPart 中;
- 使用 STL 库中的 reverse 函数对整数部分和小数部分反转;
- 将反转后的整数部分和小数部分拼接成新的字符串,并使用 stod 函数(从字符串到 double)将其转化为 double 类型后输出。
最后的最后: 这个程序是我查了资料后才写出来的 此程序的注解是ai生成的
-
0
思路:
因为输入的是一位小数,所以float是完全够用的,但是输入的是小数不太好处理,所以先*10变成整数,又因为这个变量是个float类型的,所以计算的时候需要强制转格式,取出每一位的数字后倒序输出就行力(喜)
#include <iostream> using namespace std; int main() { float num; int a,b,c,d; cin >> num; num *= 10; a = (int)num % 10; b = (int)num / 10 % 10; c = (int)num / 100 % 10; d = (int)num / 1000; cout << a << "." << b << c << d; return 0; }
- 1
信息
- ID
- 136
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 6
- 标签
- 递交数
- 3173
- 已通过
- 972
- 上传者