1 条题解

  • 0
    @ 2025-9-15 23:50:35

    C

    说明

    本题要求计算两个整数a(分子)和b(分母)的商,并以双精度浮点数形式保留9位小数输出。核心思路是:

    1. 将整数除法转换为浮点数除法(通过类型转换避免整数截断);
    2. 使用格式化输出控制小数位数为9位,自动处理四舍五入。

    关键在于确保除法运算为浮点数除法(如(double)a / b),而非整数除法(会直接截断小数部分)。时间复杂度为O(1),适合处理常规整数输入。

    代码

    #include <stdio.h>
    
    int main() {
        int a, b;
        // 读取分子a和分母b
        scanf("%d %d", &a, &b);
        
        // 计算浮点数商(转换为double类型避免整数除法)
        double result = (double)a / b;
        
        // 输出保留9位小数的结果
        printf("%.9f\n", result);
        return 0;
    }
    

    C语言拓展知识

    推荐搜索:C语言类型转换(显式转换(double)的作用)、浮点数除法与整数除法的区别、printf%.9f的四舍五入规则(如何处理第10位小数)。

    C++

    说明

    本题逻辑与C语言一致(计算分数的浮点值并保留9位小数),C++通过fixedsetprecision(9)控制输出格式,同时利用显式类型转换确保除法为浮点数运算,代码更简洁。

    新知识

    1. 浮点数除法保证:
      • 术语:(double)a / b中的显式类型转换
      • 解释:当a和b为int类型时,直接a / b会执行整数除法(截断小数部分)。通过(double)a将a转换为double类型,触发浮点数除法,得到精确的小数结果。
      • 对比:C和C++的类型转换规则相同,但C++的输出格式化更灵活。

    AC

    #include <bits/stdc++.h>
    using namespace std;
    
    int main() {
        int a, b;
        // 读取分子a和分母b
        cin >> a >> b;
        
        // 计算浮点数商(显式转换为double确保浮点数除法)
        double result = (double)a / b;
        
        // 输出保留9位小数
        cout << fixed << setprecision(9) << result << endl;
        return 0;
    }
    

    C++拓展知识

    推荐搜索:C++中隐式与显式类型转换的区别、fixed模式下setprecision的精度控制细节、浮点数除法的精度误差来源(如无法精确表示的小数)。

    • 1

    信息

    ID
    313
    时间
    1000ms
    内存
    128MiB
    难度
    6
    标签
    递交数
    148
    已通过
    43
    上传者