1 条题解

  • 0
    @ 2098-3-1 5:09:13

    【例14.1】输出浮点数

    解题思路

    分别用 printf 的 %f、%.5f、%e、%g 格式生成四种输出。科学计数法指数按本站样例补至三位。

    正确性说明

    格式化函数实现定点、小数位限制、科学计数法和有效数字显示,指数补零仅调整书写不改变值。

    易错点

    本站样例指数为 e+001;常见 Linux printf 给 e+01,代码专门补齐指数位。

    复杂度

    本题输入规模固定,时间 O(1),额外空间 O(1)。

    参考代码(C++11)

    #include <bits/stdc++.h>
    using namespace std;
    
    int main() {
        ios::sync_with_stdio(false);
        cin.tie(nullptr);
        double x;
        cin >> x;
        char buf[200];
        snprintf(buf, sizeof(buf), "%f", x);
        cout << buf << "\n";
        snprintf(buf, sizeof(buf), "%.5f", x);
        cout << buf << "\n";
        snprintf(buf, sizeof(buf), "%e", x);
        string s = buf;
        size_t p = s.find('e');
        if (p != string::npos) {
            while (s.size() - p - 2 < 3)
                s.insert(p + 2, 1, '0');
        }
        cout << s << "\n";
        snprintf(buf, sizeof(buf), "%g", x);
        cout << buf << "\n";
        return 0;
    }
    
    • 1

    信息

    ID
    567
    时间
    1000ms
    内存
    128MiB
    难度
    入门
    标签
    递交数
    0
    已通过
    0
    上传者