//6.5
#include <iostream>
#include<cctype>
using namespace std;
void main65()
{
int salary;
cout<<"Enter your salary:";
cin>>salary;
while(salary>=0)//&&isdigit(salary))
{
if(salary<5000)
cout<<"Your salary is "<<salary<<" You shouldn't!"<<endl;
else if(salary<15000)
cout<<"Your salary is "<<salary<<" ,Your sui is "<<salary*0.1<<endl;
else if(salary<35000)
cout<<"Your salary is "<<salary<<" ,Your sui is "<<salary*0.15<<endl;
else
cout<<"Your salary is "<<salary<<" ,Your sui is "<<salary*0.2<<endl;
cout<<"Enter your salary:";
cin>>salary;
}
//cout<<salary<<" isdigit()"<<endl;//<<isdigit(salary)<<endl;
cout<<"Finish!";
cin.get();
system("pause");
}
//2014-8-13
发现有个bug
那就是isdigit()函数的原型为
int isdigit(char c)
参数应该是一个char字符,如果是int类型,无论传递什么参数,返回的都是一个false值,salary的类型应该是char.
修改后的程序为:
#include <iostream>
#include<cctype>
using namespace std;
int main()
{
char salary;
cout<<"Enter your salary:";
cin>>salary;
while(salary>=0&&isdigit(salary))
{
if(salary<5000)
cout<<"Your salary is "<<salary<<" You shouldn't!"<<endl;
else if(salary<15000)
cout<<"Your salary is "<<salary<<" ,Your sui is "<<salary*0.1<<endl;
else if(salary<35000)
cout<<"Your salary is "<<salary<<" ,Your sui is "<<salary*0.15<<endl;
else
cout<<"Your salary is "<<salary<<" ,Your sui is "<<salary*0.2<<endl;
cout<<"Enter your salary:";
cin>>salary;
}
//cout<<salary<<" isdigit()"<<endl;//<<isdigit(salary)<<endl;
cout<<"Finish!"<<endl;
cin.get();
}
但是考虑到isdigit是检测单个字符,因此弃用。
修改完善后的程序如下:
#include <iostream>
#include<cctype>
using namespace std;
int main()
{
int salary;
cout<<"Enter your salary:";
while(cin>>salary&&salary>=0)
{
if(salary<5000)
cout<<"Your salary is "<<salary<<" You shouldn't!"<<endl;
else if(salary<15000)
cout<<"Your salary is "<<salary<<" ,Your sui is "<<salary*0.1<<endl;
else if(salary<35000)
cout<<"Your salary is "<<salary<<" ,Your sui is "<<salary*0.15<<endl;
else
cout<<"Your salary is "<<salary<<" ,Your sui is "<<salary*0.2<<endl;
cout<<"Enter your salary:";
// cin>>salary;
}
//cout<<salary<<" isdigit()"<<endl;//<<isdigit(salary)<<endl;
cout<<"error !Finish!"<<endl;
cin.get();
}
在linux下的运行截图:
感谢网友:ffx372580856和zhy137879的提醒,谢谢。
-----2014-8-13 于GDUT