求解 为什么输入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; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥30 关于#java#的问题,请各位专家解答!
- ¥30 vue+element根据数据循环生成多个table,如何实现最后一列 平均分 合并
- ¥20 pcf8563时钟芯片不启振
- ¥20 pip2.40更新pip2.43时报错
- ¥15 换yum源但仍然用不了httpd
- ¥50 C# 使用DEVMOD设置打印机首选项
- ¥15 麒麟V10 arm安装gdal
- ¥20 OPENVPN连接问题
- ¥15 flask实现搜索框访问数据库
- ¥15 mrk3399刷完安卓11后投屏调试只能显示一个设备