不理解这个程序,谁能帮我解释?谢谢!

pshij 2008-04-13 12:27:32
这是书上的一道练习题:
main()
{
int c;
long i;
float y,x1,x2,x4,x6,x10;
x1=100000*0.1;
x2=x1+100000*0.075;
x4=x2+200000*0.05;
x6=x4+200000*0.03;
x10=x6+400000*0.015;
printf("请输入利润:");
scanf("%ld",&i);
c=i/100000;
if(c>10)
c=10;
switch(c)
{
case 0:y=i*0.1;break;
case 1:y=x1+(i-100000)*0.075;break;
case 2:
case 3:y=x2+(i-200000)*0.05;break;
case 4:
case 5:y=x4+(i-400000)*0.03;break;
case 6:
case 7:
case 8:
case 9:y=x6+(i-600000)*0.015;break;
case 10:y=x10+(i-1000000)*0.01;
}
printf("利润是:%ld,奖金是:%.1f\n",i,y);
}

c=i/100000,switch(c)如果我输入100000,c的结果为1,按道理应该执行case 1:这段语句,但为什么会执行csae 0:这段语句,其实执行这段答案是正确的。但为什么我看不懂,还有当输入200000,按道理也是执行case 2:,为什么又执行case 1:,结果是对的。那位高手能指点,我在此多谢了!
...全文
58 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
HelloDan 2008-04-13
  • 打赏
  • 举报
回复

#include<stdio.h>

int main()
{
int c;
long i;
float y,x1,x2,x4,x6,x10;
x1=100000*0.1;
x2=x1+100000*0.075;
x4=x2+200000*0.05;
x6=x4+200000*0.03;
x10=x6+400000*0.015;
printf("请输入利润:");
scanf("%ld",&i);
c=i/100000;

if(c>10)
c=10;
switch(c)
{
case 0:y=i*0.1;
printf("case 0\n"); //here output to see
break;
case 1:y=x1+(i-100000)*0.075;
printf("case 1\n");//here output to see
break;
case 2:
case 3:y=x2+(i-200000)*0.05;break;
case 4:
case 5:y=x4+(i-400000)*0.03;break;
case 6:
case 7:
case 8:
case 9:y=x6+(i-600000)*0.015;break;
case 10:y=x10+(i-1000000)*0.01;
}
printf("利润是:%ld,奖金是:%.1f\n",i,y);

system("pause");
return 0;
}
//至少我的没有问题,有的可能是你的编译器的问题吧。
  • 打赏
  • 举报
回复
你说的咋真奇怪了
baihacker 2008-04-13
  • 打赏
  • 举报
回复
请输入利润:100000
利润是:100000,奖金是:10000.0
有问题么?
liukeke2008 2008-04-13
  • 打赏
  • 举报
回复
定义的是实数,有效数字是7位。按理应该执行lz讲的,可是代入结果是一样的呀!你怎么知道是执行了你所讲的呢
abupie 2008-04-13
  • 打赏
  • 举报
回复
测试没发现楼主的问题。。

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧