//判断输入的是数字还是非数字
char arr[] = { '!','#','@','$','%','^','&','*','(',')','-','+','=','[',']','{','}','\','|','<','>',',','.','/','?' };
int flat = 0;
int Judgments_numbers(string income)
{
if (income.length() == 0)return -1;
bool istrue = true;
flat = 0;
if (strcmp(income.c_str(), "#") == 0)
{
return 3; //表示输入的'#'
}
int tempTaxesNum=0, temp_ = 0;
int len = strlen(arr);
for (int i = 0; i < income.length(); i++)//检测字符串中是否包含字母,如果包含字母则无法装换数字,返回自定义码
{
if (income[i] >= 'a' && income[i] <= 'z' || income[i] >= 'A' && income[i] <= 'Z') //判断释放是字符
{
istrue = false;
break;
}
for (int j = 0; j < len; j++)//检测字符串中是否包含指定的特殊符号,如果包含指定的特殊符号则无法装换数字,返回自定义码
{
if (income[i]==arr[j])
{
istrue = false;
break;
}
}
if (!istrue)//如果是特殊字符,则跳出整个循环
break;
}
if (!istrue)
{
return 2; //表示包含字母
}
return 1; //表示是数字
}
//计算收入所得税
void count_Taxes(int TaxesNum)
{
int Taxes = 0;
if (TaxesNum <= 5000)
{
cout << "5000 不收税." << endl;
return;
}
else if (TaxesNum >= 5001 && TaxesNum <= 15000)
{
Taxes = (TaxesNum - 5000) * 0.1;
}
else if (TaxesNum >= 15001 && TaxesNum <= 35000)
{
Taxes = (TaxesNum - 15000) * 0.15 + (15000 - 5000) * 0.1;
}
else
{
Taxes = (35000 - 15000) * 0.15 + (15000 - 5000) * 0.1+(TaxesNum- 35000)*0.2;
}
cout << "应交的税: " << Taxes << endl;
}
//例子
int main(int argc, char* argv[])
{
string num;
while (true)
{
cout << "请输入要月总收入金额" << endl;
cin >> num;
int ret = Judgments_numbers(num);//检测字符串中是否包含除数字以外的字符,如果有则不坐数字转换
if (ret == 1)//是数字
{
count_Taxes(atoi(num.c_str()));
}
else if(ret == 2)
{
cout << "请输入数字" << endl;
}
else if (ret == 3)
{
cout << "程序退出" << endl;
break;
}
else if (ret == -1)
{
cout << "字符串不可以为空" << endl;
}
}
return 0;
}



