noi1001: 温度转换

知识点: 涉及到一元方程式的转换, 以及浮点数保留位数的输出

题目描述

将输入的华氏温度转换为摄氏温度。由华氏温度F与摄氏温度C的转换公式为:F=C×9/5+32。

输入

输入一个实数,表示华氏温度

输出

输出对应的摄氏温度,答案保留4位小数。

样例输入

50

样例输出

10.0000

参考代码:

  1. #include <iostream>
  2. #include <cstdio>
  3. #include <iomanip> // 为了cout 输出控制小数位数
  4. using namespace std;
  5. int main() {
  6. /*
  7. double F, C; cin >> F;
  8. C = (F-32)*5/9;
  9. printf("%.4f, C);
  10. */
  11. double F; cin >> F;
  12. printf("%.4f\n, (F-32)*5/9); // cout << fixed << setprecision(4) << (F-32)*5/9 << endl;
  13. return 0;
  14. }

说明及参考:

C 语言中 printf () 函数可以非常方便控制保留 几位小数输出,在 C++ 当中也是可以控制小数保留,cout () 和 printf () 还是有一些区别。

需要头文件#include

  • setprecision()来用来保存有效数字,fixed和setprecision()一起用就变成保存小数点后有效数字。
  • fixed 可以通过 cout.unsetf(ios::fixed); 这段代码关掉。不然会一直开着。
  • fixed有个地方需要注意的是可以保存的有效数字包括0,不开fixed的话,即使保存3个有效数字,小数点后的0也会自动省略。即 1.2 要是setprecision(3) 结果还是1.2 而不是1.20. 所以通常想要像在printf()中一样使用,都是要开fixed的!

下面是测试代码,自己打一遍过一下,就更熟悉了。

  1. #include <iostream>
  2. #include <iomanip>
  3. using namespace std;
  4. int main() {
  5. double p = 12.0;
  6. cout << setprecision(3) << p << endl;
  7. cout << fixed << setprecision(3) << p << endl;
  8. cout << setprecision(3) << p << endl;
  9. cout.unsetf(ios::fixed);
  10. cout << setprecision(3) << p << endl;
  11. cout << setprecision(1) << p << endl;
  12. cout.setf(ios::fixed);
  13. cout << setprecision(3) << p << endl;
  14. return 0;
  15. }

输出:
image.png

练习:

尝试用 cout 的输出方式控制小数位数完成此题.