《信息学奥赛一本通》第23题:输出浮点数
题目描述
读入一个双精度浮点数,分别按输出格式%f,%f保留 5 5 5 位小数,%e和%g的形式输出这个数,每次在单独一行上输出。
输入格式
一个双精度浮点数。
输出格式
第一行是按%f输出的双精度浮点数;
第二行是按%f保留 5 5 5 位小数输出的双精度浮点数;
第三行是按%e输出的双精度浮点数;
第四行是按%g输出的双精度浮点数。
输入输出样例 #1
输入 #1
12.3456789
输出 #1
12.345679
12.34568
1.234568e+01
12.3457

大家好,我是莫小特。
这篇文章给大家带来《信息学奥赛一本通》中的第 23 题:输出浮点数。
一、题目描述
洛谷的题号是:B2024 输出浮点数

二、题意分析
这道题是信息学奥赛一本通练习题的第 23 题,考察的是格式化输出。
根据输入格式的描述,输入一个双精度浮点数,双精度浮点数是 double,所以直接定义 double 类型。
double x;
使用 scanf 来输入,因为是 double 类型,所以使用 %lf,并且在 scanf 函数中要使用 & 运算符输入。
scanf("%lf",&x);
根据题目意思,需要将数据按要求输出。
第一个要求:按 %f 输出双精度浮点数,直接使用这个方法即可。
printf("%f",x);
下一个数需要换行,可以使用转义字符或者直接 cout<<endl;也可以printf 和转义字符的结合。
printf("%f\n",x);
接下来要输出保留 5 位小数的双精度浮点数,使用 printf 的格式化输出方法,同样要加入 \n。
printf("%.5f\n",x);
第三行是按 %e 输出的双精度浮点数,直接使用即可,再加上 \n。
printf("%e\n",x);
第四行是按 %g 输出的双精度浮点数,同样使用相应的方法。
printf("%g\n",x);
按样例输入来测试数据。

符合样例输出的格式,到网站提交测评。

测试通过!
三、完整代码
该题的完整代码如下:
#include<iostream>
#include<bits/stdc++.h>
using namespace std;
int main()
{double x;scanf("%lf",&x);printf("%f\n",x);printf("%.5f\n",x);printf("%e\n",x);printf("%g\n",x);return 0;
}
四、总结
本题考察的是格式化输出的多种方式,具体包括:
1、使用 %f 输出浮点数
%f 会以默认精度(一般为小数点后六位)输出浮点数,适用于浮点数的常规显示需求。
2、控制小数位数的输出
使用 %.5f 可以精确控制输出小数点后的位数,适用于要求结果精确的输出。
3、科学计数法输出浮点数
%e 会以科学计数法(如 1.234567e+02)输出浮点数,适合表示非常大或非常小的数字。
4、自动选择合适格式的 %g 输出
%g 会根据数值大小自动选择 %f 或 %e 格式,避免不必要的零或冗余信息,适合需要紧凑表示的场景。
通过本题,我们可以熟悉 printf 函数在浮点数输出中的多种用法,这个题目非常经典,很适合学习掌握 printf 函数的多种格式化输出。
如果你觉得这篇文章对你有帮助,欢迎点赞、收藏、关注我哦!
我们下集见~