如何修复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
相关产品推荐
相关产品推荐

