C语言问题

f08865 2014-10-21 05:41:12
代码如下:

#include <stdio.h>
#define RATE1 0.15;
#define RATE2 0.28;
int main()
{
double tax,limit,m;
int num;



printf("Select the type of marriage:\n");
printf("1)SINGLE\t2)HOST\t3)MARRIED_SHARE\n4)MARRIED_DIVORCE\t5)quit\n");
while(scanf("%d",&num)==1 )


switch(num)
{
case 1:limit=17850.0;break;
case 2:limit=23900.0;break;
case 3:limit=29750.0;break;
case 4:limit=14875.0;break;
case 5:printf("Done!\n");
return 0;
default :printf("Please enter a valid figure:\n");
return num;
}

printf("Please enter your income:\n");
scanf("%.2lf",&m);


printf("you have select %d\n",num);
printf("input the pay:");
scanf("%lf",&m);

if (m <= limit)
tax = m * RATE1;

else
tax = limit * RATE1 + (m - limit) * RATE2;

printf("tax is %.2lf\n",tax);

return 0;

}
请问为何会操作无效。
...全文
205 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2014-10-22
  • 打赏
  • 举报
回复
代码功能归根结底不是别人帮自己看或讲解或注释出来的;而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。 提醒:再牛×的老师也无法代替学生自己领悟和上厕所! 单步调试和设断点调试(VS IDE中编译连接通过以后,按F10或F11键单步执行,按Shift+F11退出当前函数;在某行按F9设断点后按F5执行停在该断点处。)是程序员必须掌握的技能之一。
f08865 2014-10-22
  • 打赏
  • 举报
回复
while那里改为 while(1) { scanf("%d",&num); switch(num) { case 1:limit=17850.0;break; case 2:limit=23900.0;break; case 3:limit=29750.0;break; case 4:limit=14875.0;break; case 5:printf("Done!\n"); return 0; default :printf("Please enter a valid figure:\n"); return num; } } 这样就可以实现输入不在正确数字时一直循环,但是回不到switch, 除了直接continue,这种为何不能实现 2) if (m <= limit) tax = m * RATE1; else tax = limit * RATE1 + (m - limit) * RATE2; 这种语句为何还需要加大括号 麻烦了
f08865 2014-10-22
  • 打赏
  • 举报
回复
你好,我改了一下,其实我主要疑问有二 一,如果default那里return num为何不起作用,我知道直接continue更好。 二,在if里面第一个语句不加{}就会显示错误,不解,不是只有一句吗
赵4老师 2014-10-22
  • 打赏
  • 举报
回复
偶遇到类似问题都是用 “每次用/*...*/注释掉不同部分再重新编译,直到定位到具体语法出错的位置。” 的方法解决的。
f08865 2014-10-22
  • 打赏
  • 举报
回复
多谢老师回复。。 我也试过设断点处理,但是还是不能理解 if语句里面只有一行为何还提示以下 error C2181: illegal else without matching if warning C4552: '*' : operator has no effect; expected operator with side-effect 代码 if (m <= limit) tax = m * RATE1; else tax = limit * RATE1 + (m - limit) * RATE2; printf("tax is %.2lf\n",tax); 再怎么想也想不通
帅气小小少 2014-10-21
  • 打赏
  • 举报
回复
把while去掉就行了。 改成scanf("%d",&num);
帅气小小少 2014-10-21
  • 打赏
  • 举报
回复
输入1,2,3,4 一直在while里面循环吧。

70,023

社区成员

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

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