读书人

请大家帮小弟我看下这个小程序

发布时间: 2013-06-26 14:29:32 作者: rapoo

请大家帮我看下这个小程序
请大家帮我看下这个小程序,能运行,可是输入5000,最后结果还是5000,结果不对,不知道哪里出错了。
谢谢!!!
#include <stdio.h>
#include<stdlib.h>

int main()
{
float tax=0.0;
int Payment; //薪水
int extra;
int Get; //实际工资

int yingjiao;//应缴税额

printf("请输入您的工资:\n");
scanf("%d",&Payment);
extra=Payment-2000;
switch(extra)
{
case1:
if(extra>0&&extra<=500)
tax=0.05;
break;
case2:
if(extra>500&&extra<=2000)
tax=0.1;
break;
case3:
if(extra>2000&&extra<=5000)
tax=0.15;
break;
case4:
if(extra>5000&&extra<=20000)
tax=0.2;
break;
case5:
if(extra>40000&&extra<=60000)
tax=0.25;
break;
case6:
if(extra>60000&&extra<=80000)
tax=0.35;
break;
case7:
if(extra>80000&&extra<=100000)
tax=0.4;
break;
case8:
if(extra>=100000)
tax=0.45;
break;
}
yingjiao=tax*extra;
Get=Payment-yingjiao;

printf("当月实发工资为:%d\n",Get);

system("pause");
return 0;

} C语言
[解决办法]
好好检查下你的 case 条件. case1, case2 是什么意思? switch 是根据 case 判断的, 不是根据 case 里的 if 来判断的.
[解决办法]
extra 满足 case后面的条件才会进入相应case语句块。你的case语句块显然不满足条件。
你想啊:extra=Payment-2000的结果要进入case 中必须使得输入的Payment = 2000,2001,......这太不靠谱了。
[解决办法]
switch语法再看看。
以你的情况,不能用switch,改用 if else if 试试
[解决办法]
switch case不是这样用的。。好好看看书吧。。这里直接用if else就可以了。。
改成这样吧。。


#include <stdio.h>
#include<stdlib.h>

int main()
{
float tax=0.0;
int Payment; //薪水
int extra;
int Get; //实际工资

int yingjiao;//应缴税额

printf("请输入您的工资:\n");
scanf("%d",&Payment);
extra=Payment-2000;
if(extra>0&&extra<=500) tax=0.05;
if(extra>500&&extra<=2000) tax=0.1;
if(extra>2000&&extra<=5000) tax=0.15;
if(extra>5000&&extra<=20000) tax=0.2;
if(extra>40000&&extra<=60000) tax=0.25;
if(extra>60000&&extra<=80000) tax=0.35;
if(extra>80000&&extra<=100000) tax=0.4;


if(extra>=100000) tax=0.45;
yingjiao=tax*extra;
Get=Payment-yingjiao;

printf("当月实发工资为:%d\n",Get);

system("pause");
return 0;
}


[解决办法]
请大家帮小弟我看下这个小程序捉急,case后是要extra的值就对了。不是单纯的123456~ ~这样略蛋疼,还要处理extra的值。直接if吧~

读书人网 >C语言

热点推荐