本文共 991 字,大约阅读时间需要 3 分钟。
banghaiqiao
新兵答主
10-28
TA获得超过7659个赞
你这题目是编程100例的题目,错了第一算法错误了 if(a<=100000) printf("%ld",(0.1*a));这对但 这里错了 if(a<=200000) printf("%ld",0.075*(a-100000)+10000);这里你奖金算了多出的部分的,那没多出的部分你没算啊。其他后面同理不说了, 还有if else太混乱了可以用 if else if else if else if ...这样条理清晰点程序就不给你写了,相信你自己有源代码 补充: main() { long int i; int bonus1,bonus2,bonus4,bonus6,bonus10,bonus; scanf("%ld",&i); bonus1=100000*0.1;bonus2=bonus1+100000*0.75; bonus4=bonus2+200000*0.5; bonus6=bonus4+200000*0.3; bonus10=bonus6+400000*0.15; if(i<=100000) bonus=i*0.1; else if(i<=200000) bonus=bonus1+(i-100000)*0.075; else if(i<=400000) bonus=bonus2+(i-200000)*0.05; else if(i<=600000) bonus=bonus4+(i-400000)*0.03; else if(i<=1000000) bonus=bonus6+(i-600000)*0.015; else bonus=bonus10+(i-1000000)*0.01; printf("bonus=%d",bonus); } 补充: 不是写上了错误的么?你 程序逻辑 错误了还有多层的if else也混乱了 追问: 很谢谢你啊,这种方法我会了 我只是想知道我的那种方法到底怎么错了 而且我的 算法 实际上是对的啊 我每一个后面加的10000、17500……就是没有超出的部分的奖金啊 还是很谢谢你 追问: 中间的那些 大括号 去掉也没有用 我试过了 输出还是0 回答: 你的if 语句乱了当然没有正确答案了,你想要不是0的结构很容易啊10000.0全部加.0就行了
转载地址:http://wmiox.baihongyu.com/