小白求助
#include <stdio.h>int main()
{
int i;
doublebonus,bon1,bon2,bon4,bon6,bon10;
intbranch;
bon1=100000*0.1;
bon2=bon1+100000*0.075;
bon4=bon2+200000*0.05;
bon6=bon4+200000*0.03;
bon10=bon6+400000*0.015;
scanf("%d",&i);
branch=i/100000;
if (branch>10)branch=10;
switch(branch)
{case 0:bonus=i*0.1;break;
case 1:bonus=bon1+(i-100000)*0.075;break;
case 2:
case 3: bonus=bon2+(i-200000)*0.05;break;
case 4:
case 5: bonus=bon4+(i-400000)*0.03;break;
case 6:
case 7:
case 8:
case 9: bonus=bon6+(i-600000)*0.015;break;
case 10: bonus=bon10+(i-1000000)*0.01;
}
printf("prize=%d\n",bonus);
return 0;
}
试了好数,总是输出0 bonus你定义的是double型
输出用%d?! double 改成int,然后我输入负数怎么让它输出0 巴巴鲁 发表于 2020-10-26 20:34
bonus你定义的是double型
输出用%d?!
去做一下,我发的那个求助帖子吧,我记得你做过类似的小岛面积的题目 936241151 发表于 2020-10-26 20:52
double 改成int,然后我输入负数怎么让它输出0
判断一下,如果是负数就输出0呗 936241151 发表于 2020-10-26 20:52
double 改成int,然后我输入负数怎么让它输出0
我运行了一下你的程序,
你什么就是输入负数,又什么变量输出为0呢?
这样可以吗:
scanf("%lf",&i);
branch = i /1 00000;
if (branch > 10)
branch = 10;
if (branch < 0)
branch = 2;
switch(branch)
{
case 0: bonus = i * 0.1;
break;
case 1: bonus = bon1 + (i - 100000) * 0.075;
break;
case 2: bonus = 0;
break;
乐乐学编程 发表于 2020-10-26 21:24
我运行了一下你的程序,
你什么就是输入负数,又什么变量输出为0呢?
pintia上的一题,就是我scanf输入,当输入负数的时候,比如我输入-10000,它输出-1000,预期结果应该是0 936241151 发表于 2020-10-26 21:37
pintia上的一题,就是我scanf输入,当输入负数的时候,比如我输入-10000,它输出-1000,预期结果应该是0
将我红色字体语句加进去,保证只要你输入负数,输出肯定是0 乐乐学编程 发表于 2020-10-26 21:43
将我红色字体语句加进去,保证只要你输入负数,输出肯定是0
不管输入什么,全是0了{:10_266:} #include <stdio.h>
int main()
{
int i;
doublebonus,bon1,bon2,bon4,bon6,bon10;
intbranch;//这里为int
bon1=100000*0.1;
bon2=bon1+100000*0.075;
bon4=bon2+200000*0.05;
bon6=bon4+200000*0.03;
bon10=bon6+400000*0.015;
scanf("%d",&i);
branch=i/100000;//i也是int branch也是int 如果i的值小于100000,branch得到的值永远是等于0的值,int类型0.9也会把 .9舍弃,只保留0,所以后面的判断没有意义.branch的值会等于0,所以才会等于0;可以尝试把branch改成浮点型
if (branch>10)branch=10;
switch(branch)
{case 0:bonus=i*0.1;break;
case 1:bonus=bon1+(i-100000)*0.075;break;
case 2:
case 3: bonus=bon2+(i-200000)*0.05;break;
case 4:
case 5: bonus=bon4+(i-400000)*0.03;break;
case 6:
case 7:
case 8:
case 9: bonus=bon6+(i-600000)*0.015;break;
case 10: bonus=bon10+(i-1000000)*0.01;
}
printf("prize=%d\n",bonus);
return 0;
} 936241151 发表于 2020-10-26 22:00
不管输入什么,全是0了
是谁告诉你,将他的红色部分加到程序里去,就不管输入什么,全是0了?
只有 i 为负数,branch 才小于 0,只有 branch 小于 0,branch 才等于 2,只有 branch 等于 2,只有 branch 等于 2 ,才会是 case 2: bonus = 0 问题还没有解决?
页:
[1]