空格分隔输出

GitHub跳转原题关系图返回列表

按行读取字符和三类数值,并用 .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;
}

复杂度

固定读写四个字段,时间复杂度为 O(1)O(1),额外空间复杂度为 O(1)O(1)

总结

混合输入时先按题面保留每一行的类型,再集中在 f-string 中规定输出格式;不要依赖普通 print 的浮点数默认表示。