按行读取字符和三类数值,并用 .6f 统一控制两个浮点数的小数位。
OJ: noi_openjudge
题目 ID: ch0101-06
难度:入门
标签:输入输出浮点数输出python
日期: 2026-07-30 23:01
题意
输入依次占四行:一个字符、一个整数、一个单精度浮点数和一个双精度浮点数。按原顺序输出,相邻字段一个空格,两个浮点数都保留 6 位小数。
思路
四行数据类型不同,逐行调用 input() 最直观:字符保留字符串,整数用 int 转换,浮点数用 float 转换。第三行题面规定为单精度,先通过 struct 做单精度舍入;第四行保持 Python 的双精度即可。
最后在一个 f-string 中写出各字段,并为两个浮点数使用 .6f。这样空格位置、小数点和补零都由同一条格式串控制。
代码
Python代码
python
from struct import pack, unpack
character = input()
integer = int(input())
# 第三个数按 C++ 的 float 读入,先做一次单精度舍入。
single_precision = unpack("f", pack("f", float(input())))[0]
double_precision = float(input())
print(f"{character} {integer} {single_precision:.6f} {double_precision:.6f}")C++代码
这里保留原有的 C++ 参考实现。
cpp
#include <bits/stdc++.h>
using namespace std;
int main()
{
char a;
int b;
float c;
double d;
cin>>a;
cin>>b;
cin>>c;
cin>>d;
cout<<a<<" "<<b<<" "<<fixed<<setw(6)<<c<<" "<<fixed<<setw(6)<<d<<endl;
return 0;
}复杂度
固定读写四个字段,时间复杂度为
总结
混合输入时先按题面保留每一行的类型,再集中在 f-string 中规定输出格式;不要依赖普通 print 的浮点数默认表示。