帮我修改一下这个c++代码的错误。#include <iostream> #include <string> using namespace std; class person { protected: string name; char sex; int age; public: person(string n, char s, int a): name(n), sex(s), age(a) {} virtual void show() { cout<<"姓名:"<<name<<endl; cout<<"性别:"<<sex<<endl; cout<<"年龄:"<<age<<endl; } }; class teacher: public person { private: string title; public: teacher(string n, char s, int a, string t): person(n, s, a), title(t) {} void show() { person::show(); cout<<"职称:"<<title<<endl; } void check() { if(title=="教授" && age<=30) cout<<name<<"教授的年龄不符合要求!"<<endl; else if(title=="副教授" && age<=26) cout<<name<<"副教授的年龄不符合要求!"<<endl; else if(title=="讲师" && age<=23) cout<<name<<"讲师的年龄不符合要求!"<<endl; else if(title=="助教" && age<=20) cout<<name<<"助教的年龄不符合要求!"<<endl; else cout<<name<<"的年龄符合要求。"<<endl; } }; int main() { teacher t("李琴", "男", 32, "教授"); t.show(); t.check(); return 0; }
时间: 2023-12-03 22:45:53 浏览: 143
这段代码有两个问题:
1. 在创建 teacher 对象时,第二个参数应该是一个字符型,而不是字符串。所以需要将 "男" 改为 '男'。
2. 在 check 函数中,对于年龄限制的条件判断中,应该使用 >= 而不是 <=。因为年龄越小,限制越多,所以应该是 >= 而不是 <=。
修改后的代码如下:
```
#include <iostream>
#include <string>
using namespace std;
class person {
protected:
string name;
char sex;
int age;
public:
person(string n, char s, int a): name(n), sex(s), age(a) {}
virtual void show() {
cout<<"姓名:"<<name<<endl;
cout<<"性别:"<<sex<<endl;
cout<<"年龄:"<<age<<endl;
}
};
class teacher: public person {
private:
string title;
public:
teacher(string n, char s, int a, string t): person(n, s, a), title(t) {}
void show() {
person::show();
cout<<"职称:"<<title<<endl;
}
void check() {
if(title=="教授" && age>=30)
cout<<name<<"教授的年龄不符合要求!"<<endl;
else if(title=="副教授" && age>=26)
cout<<name<<"副教授的年龄不符合要求!"<<endl;
else if(title=="讲师" && age>=23)
cout<<name<<"讲师的年龄不符合要求!"<<endl;
else if(title=="助教" && age>=20)
cout<<name<<"助教的年龄不符合要求!"<<endl;
else
cout<<name<<"的年龄符合要求。"<<endl;
}
};
int main() {
teacher t("李琴", '男', 32, "教授");
t.show();
t.check();
return 0;
}
```
阅读全文