//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
——————————————————————————————————————————————————
//写的错误或者不好的地方请多多指导,可以在下面留言或者给我发邮件,指出我的错误以及不足,以便我修改,更好的分享给大家,谢谢。
转载请注明出处:https://www.royalchen.com/
author:royalchen
Email:royalchen@royalchen.com
———————————————————————————————————————————————————