一个水分子的质量是3.0*10-23克,一夸脱水的质量是950克。写一个程序输入水的夸脱数n(0 <= n <= 1e10),然后输出水分子的总数。
输入
109.43
输出
3.465283E+027
分析:1.结果为0的时候特判
2.结果在0~1之间的,获得小数点后面的0的个数
3.结果大于1的,要获得小数点前面多的整数位的位数
4.注意位数可能超过int,要用long long存
5.获得位数是可以用取以10为底对数的方式代替循环~
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
#include <iostream> #include <cmath> using namespace std; int main() { double n, ans; cin >> n; ans = n * 950 / 3.0; if(ans == 0) { printf("0.000000E+000"); } else if (ans >= 1){ int num = log10(ans); printf("%6fE+%03lld",ans/pow(10,num),23+num); }else{ int num = log10(ans)*-1 + 1; printf("%6fE+%03lld",ans*pow(10,num),23-num); } return 0; } |
❤ 点击这里 -> 订阅《PAT | 蓝桥 | LeetCode学习路径 & 刷题经验》by 柳婼