1 条题解

  • 0
    @ 2025-9-15 23:47:26

    C

    说明

    本题要求计算总习题数的30%并输出结果。核心逻辑是:目标完成数 = 总习题数 × 30%(即0.3)。由于题目明确x是10的倍数(如100、20等),因此计算结果一定是整数(如100×0.3=30),无需处理小数或四舍五入。整个过程仅涉及一次乘法运算,时间复杂度为O(1)(常数级)。

    代码

    #include <stdio.h>
    
    int main() {
        int x;
        // 读取总习题数x(x是10的倍数)
        scanf("%d", &x);
        
        // 计算30%的数量:x乘以0.3,结果为整数
        int target = x * 0.3;
        
        // 输出目标完成数
        printf("%d\n", target);
        return 0;
    }
    

    C语言拓展知识

    推荐搜索:C语言中整数与浮点数相乘的类型转换规则(为何x为int时,x*0.3会自动转为浮点数再计算)、整数乘法结果的整数转换(如何自动舍弃小数部分)、10的倍数保证计算结果为整数的数学原理。

    C++

    说明

    本题逻辑与C语言一致(目标数 = 总习题数 × 0.3),C++通过输入输出流简化代码,无需格式控制符,同时利用整数与浮点数的自动转换特性,直接计算并输出结果,代码更简洁。

    新知识

    1. 整数与浮点数混合运算:
      • 术语:x * 0.3中int与double的自动转换
      • 解释:当整数(int类型的x)与浮点数(0.3是double类型)相乘时,C++会自动将整数转换为浮点数(提升为double)后计算,结果为double类型,再赋值给int变量时自动截断小数部分(本题因x是10的倍数,小数部分为0,截断后即正确结果)。
      • 对比:C语言同样遵循此转换规则,但C++的输入输出无需显式格式控制,更直观。

    AC

    #include <bits/stdc++.h>
    using namespace std;
    
    int main() {
        int x;
        // 读取总习题数x(cin自动处理整数输入)
        cin >> x;
        
        // 计算30%的数量,结果为整数
        int target = x * 0.3;
        
        // 输出目标完成数
        cout << target << endl;
        return 0;
    }
    

    C++拓展知识

    推荐搜索:C++中的隐式类型转换规则(整数到浮点数的提升)、int变量接收double结果时的截断行为(与四舍五入的区别)、如何确保计算结果为整数(如本题中x是10的倍数的必要性)。

    • 1

    信息

    ID
    302
    时间
    1000ms
    内存
    64MiB
    难度
    6
    标签
    递交数
    20
    已通过
    12
    上传者