You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修复C语言代码实现rate变量支持赋值任意数值

代码问题修复方案

核心错误点梳理

  • 未定义变量n:原代码中rate = n的n没有提前声明定义,且这行属于冗余代码,后续你已经通过scanf从用户输入获取rate的值,本身就支持设置任意数值,直接删除这行即可。
  • 薪资计算逻辑错误:现有代码不管工作时长是否超过40小时都套用了加班公式,时长不足40小时时会出现计算错误,且重复给pay赋值,前一次的pay = 40 * rate完全被覆盖没有生效。
  • 类型精度问题:计算加班工资时用到了浮点数1.5,但pay是int类型会自动截断小数,建议调整为浮点类型避免精度损失。
  • printf参数缺失:输出语句printf("The result is %d");没有传入要输出的pay变量,会导致输出异常乱码值。

修复后的完整代码

#include<stdio.h>

int main(){
    // 调整pay为double类型适配浮点计算,不需要小数可以保留int类型
    int hours, rate;
    double pay;

    // 初始值可以保留,后续用户输入会覆盖原有值
    hours = 40;

    printf("Type forty: ");
    scanf("%d", &hours);

    printf("Your desired rate: ");
    scanf("%d", &rate);

    // 修正薪资计算逻辑:只有超过40小时的部分才按1.5倍计算加班工资
    if (hours <= 40) {
        pay = hours * rate;
    } else {
        pay = 40 * rate + (hours - 40) * rate * 1.5;
    }

    // 给printf传入pay参数,调整格式符适配浮点类型,保留2位小数显示
    printf("The result is %.2f", pay);

    return 0;
}

功能说明

修复后rate变量本身就支持设置任意整数值:如果需要用户自定义输入,保留现有scanf逻辑即可;如果需要直接在代码里固定rate的取值,直接给rate赋固定值、删除对应的scanf语句即可,比如写rate = 30就固定为每小时30单位薪资。

内容的提问来源于stack exchange,提问作者lonely10lf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 07:15:04