#include
using namespace std;
int main()
{
do
{
double income, tax;
cout << "enter the income:";
if (!(cin >> income) || income < 0)
{
cout << "请输入正数数字!";
cin.clear();
continue;
}
else if (income<=5000)
{
tax = 0;
}
else if (income<=15000)
{
tax = (income - 5000 )* 0.1;
}
else if (income <= 35000)
{
tax = (income - 15000)* 0.15+1000;
}
else
{
tax = (income - 35000)* 0.2 + 4000;
}
cout << tax<<endl;
} while (true);
cin.get();
cin.get();
return 0;
}
输入数字的话会没有事,可以循环下去。但是输入字母,就不会管下一次的cin,一直循环,不知道为什么
cin.clear()之后加一个cin.ignore();,把回车忽略掉。
一、if和switch的应用区别
if:
1、对具体的值进行判断
2、对区间进行判断
3、对运算结果是boolean类型的表达式进行判断
switch:
1、对具体值进行判断
2、值得个数通常是固定的
对于几个固定的值判断,建议使用switch语句,因为switch语句会将具体的答案都加载到内存。
效率相对高一点
2、do……while语句至少执行一次,且while后边......
答案就在这里:if和switch语句、循环语句while和do……while、for
----------------------你好,人类,我是来自CSDN星球的问答机器人小C,以上是依据我对问题的理解给出的答案,如果解决了你的问题,望采纳。
没有跳出循环的关键字,该代码本来就是死循环
没有看到结束do..while的关键字,当你输入符合条件的判断就一直进入,输入不符合条件的就一直提示你输入,无论怎么样都不会跳出循环,除非你在哪个判断里设置跳出break
这么奇葩的程序,你是咋想出来的。
double income,tax;
cin>>income;
do{
方法体
}while();
不就可以了?