求解 为什么输入234000 switch输出为19200 而if输出的却为20050
2条回答 默认 最新
- 想要AC的dly 2023-10-29 15:41关注
不能使用连续比较:1<I<5这种写法
#include <stdio.h> int main() { float bonus,I; // printf("请输入当月利润:"); scanf("%f",&I); switch ((int) I / 100000) { case 0: bonus = I * 0.1; break; case 1: bonus = 0.1 * 100000 + 0.075 * (I - 100000); break; case 2: case 3: bonus = 0.1 * 100000 + 0.075 * 100000 + 0.05 * (I - 200000); break; case 4: case 5: bonus = 0.1 * 100000 + .075 * 100000 + 0.05 * 200000 + 0.03 * (I - 400000); break; case 6: case 7: bonus = 0.1 * 100000 + 0.075 * 100000 + 0.05 * 200000 + 0.03 * 200000 + 0.015 * (I - 600000); break; case 8: case 9: case 10: bonus = 0.1 * 100000 + 0.075 * 100000 + 0.05 * 200000 + 0.03 * 200000 + 0.015 * 400000 + 0.01 * (I - 1000000); } printf("%5.2lf", bonus); return 0; }
#include <stdio.h> int main() { double I,a; scanf("%lf",&I); if(I<=100000)a=0.1*I; else if(100000<I&&I<=200000) a=0.1*100000+0.075*(I-100000); else if(200000<I&&I<=400000) a=0.1*100000+0.075*100000+0.05*(I-200000); else if(400000<I&&I<=600000) a=0.1*100000+0.075*100000+0.05*200000+0.03*(I-400000); else if(600000<I&&I<=1000000) a=0.1*100000+0.075*100000+0.05*200000+0.03*200000+0.015*(I-600000); else if(I>1000000) a=0.1*100000+0.075*100000+0.05*200000+0.03*200000+0.015*400000+0.01*(I-1000000); printf("%5.2f",a); return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥50 vue组件中无法正确接收并处理axios请求
- ¥15 隐藏系统界面pdf的打印、下载按钮
- ¥15 MATLAB联合adams仿真卡死如何解决(代码模型无问题)
- ¥15 基于pso参数优化的LightGBM分类模型
- ¥15 安装Paddleocr时报错无法解决
- ¥15 python中transformers可以正常下载,但是没有办法使用pipeline
- ¥50 分布式追踪trace异常问题
- ¥15 人在外地出差,速帮一点点
- ¥15 如何使用canvas在图片上进行如下的标注,以下代码不起作用,如何修改
- ¥50 vue router 动态路由问题