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

u010886029 2013-06-03 10:02:08
请大家帮我看下这个小程序,能运行,可是输入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;

}
...全文
278 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
u010886029 2013-06-07
  • 打赏
  • 举报
回复
哦,我懂了,谢谢大家
风动随心 2013-06-06
  • 打赏
  • 举报
回复
oaosj000 2013-06-06
  • 打赏
  • 举报
回复
捉急,case后是要extra的值就对了。不是单纯的123456~ ~这样略蛋疼,还要处理extra的值。直接if吧~
JM_C 2013-06-05
  • 打赏
  • 举报
回复
引用 9 楼 u010886029 的回复:
[quote=引用 7 楼 hugett 的回复:] 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;
} 
为什么不能用switch呢?不懂啊[/quote] case 后面应该跟常量表达式。常量的样子和变量的样子一样,不过它们的值不能修改。像(extra>0&&extra<=500)这个表达式的范围是不确定的,所以不能用在case语句后面,再不懂,我也不知道该怎么解释了!
u010886029 2013-06-04
  • 打赏
  • 举报
回复
引用 7 楼 hugett 的回复:
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;
} 
为什么不能用switch呢?不懂啊
艾莎云 2013-06-04
  • 打赏
  • 举报
回复
case8 后面还要break吗?
hugett 2013-06-04
  • 打赏
  • 举报
回复
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;
} 
阿麦 2013-06-03
  • 打赏
  • 举报
回复
switch语法再看看。 以你的情况,不能用switch,改用 if else if 试试
赵4老师 2013-06-03
  • 打赏
  • 举报
回复
单步调试和设断点调试是程序员必须掌握的技能之一。
忘世麒麟 2013-06-03
  • 打赏
  • 举报
回复
extra 满足 case后面的条件才会进入相应case语句块。你的case语句块显然不满足条件。 你想啊:extra=Payment-2000的结果要进入case 中必须使得输入的Payment = 2000,2001,......这太不靠谱了。
boycxd 2013-06-03
  • 打赏
  • 举报
回复
没有满足符合case的条件
_Minzey 2013-06-03
  • 打赏
  • 举报
回复
好好检查下你的 case 条件. case1, case2 是什么意思? switch 是根据 case 判断的, 不是根据 case 里的 if 来判断的.
ForestDB 2013-06-03
  • 打赏
  • 举报
回复
switch case语句用得不对。

69,336

社区成员

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

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