C语言switch语句

#include "stdio.h"
void main()
{
printf("利润为:\n");
double a,b;
scanf("%lf",&a);
if(a<=100000)
{
b=a*(10/100);
}
else if(a>100000&&a<=200000)
{
b=100000*(10/100)+(a-100000)*(7.5/100);
}
else if(a>200000&&a<=400000)
{
b=200000*(10/100)+(a-200000)*(5/100);
}
else if(a>400000&&a<=600000)
{
b=400000*(10/100)+(a-400000)*(3/100);
}
else if(a>600000&&a<=1000000)
{
b=600000*(10/100)+(a-600000)*(1.5/100);
}
else
{
b=1000000*(10/100)+(a-1000000)*(1/100);
}
printf("奖金为:\n");
printf("%lf",b);
getchar();
getchar();
getchar();
}
将这个程序用switch语句编出来

把 a/100000.0 作为开关控制变量:
double a=100000;
int A;
A = (int) (a /100000.0);

switch(A)
{
case 0: b=a*(10/100);break;
case 1: b=100000*(10/100)+(a-100000)*(7.5/100);break;
case 2: case 3: ...break;
case 4: case 5: ...break;
case 6: case 7:case 8: case 9: ...break;
default: .. break;
}
.... 处填入相应的计算式。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-03-28
不能用switch case 语句吧,switch(a)中的a在case a:语句中应该是个给定的值,不能是一个判断语句
第2个回答  2012-03-29
1.case2:case3:语句1;break;这样的语句,当表达式满足2或3的时候,都要执行语句1 因为case2中为空语句,它没有break语句,继续执行case3的语句,直到遇见break语句为止,case3中有break语句所以终止了,如果没有继续往下执行, 2.题目中I<=100000时,如I=50000时,t=0,执行case0语句,注意:当I=100000(仅此一个取值)时t=1,但是你不能因此就把处理语句写在case1中,应为case1中还包括100000<I<200000的情况,可以把I=100000时的情况与100000<I<200000的情况一起处理,放在case1中如答案:bonus=bon1+(i-100000)*0.075;break;i=100000时(i-100000)*0.075=0,只有bon1=100000*0.1的利润,不影响处理结果,而你的处理方法就忽略了100000<I<200000也是t=1的情况,从而每次都把case语句错位了 100000<I<=200000时,如I=150000你的t=I/100000;t是整形的,所以t=1或2(t=2的情况留到后面与200000<I<300000,t=2的情况一起处理),因此应该把你的处理写在case1中。 200000<I<=400000,t=2或3或4(4的情况后面处理)所以程序中case2与case3要执行相同语句。 400000<I<=600000时t=4或5或6(6的情况后面处理),case4和case5执行相同语句,语句要写在case5中。 600000<I<=1000000时t=6,7,8,9,10(10的情况后面处理)case6,7,8,9执行相同语句,语句要写在case9中。最后,你只需将上面t=10的情况与I>1000000d的情况一起处理,应该把你的处理写在case10中。~
相似回答