一个c++的问题题目代码如下,编译时是没有错误,但一运行就会出现如图的报错,麻烦各位大神们帮帮,谢谢

2024-11-07 13:13:47
推荐回答(1个)
回答1:

#include
#include
using namespace std;
class Person
{
protected:
string name;//姓名
char sex;//性别
int num;//学号
int score;//成绩
int age;//年龄
public:
void set(string s ,char sex,int nu,int sc,int age);
Person(string na="",char se=0,int nu=0,int sc=0,int ag=0);
friend int fu( int m,int n);
friend void qu(int p);
int getscore();
void display();
};
void qu(int p)//输出等级
{
switch(p/10)
{
case 10:
case 9:cout<<"优秀"< case 8:cout<<"良好"< case 7:cout<<"中等"< case 6:cout<<"及格"< default:cout<<"不及格"< }
}
int Person::getscore()//返回每个对象的分数
{
return score;
}
int fu(int m,int n)//返回最高分
{
return (m>n? m:n);
}
void Person::display()//输出
{
cout<<"name"<}
void Person::set(string s ,char se,int nu,int sc,int ag)
{
name=s;
sex=se;
num=nu;
score=sc;
age=ag;
}
Person::Person(string na,char se,int nu,int sc,int ag)
{
name=na;
sex=se;
num=nu;
score=sc;
age=ag;
}
int main()
{
Person student[10];
int i;string name;int q;
char sex[2]; int age,num;int score;
for(i=0;i<10;i++)
{
cout<<"请输入第"< cin>>name>>sex>>num>>score>>age;
student[i].set(name,sex[0],num,score,age);
}
for(i=0,q=student[0].getscore();i<10;i++)//输出最高分的函数的调用
{
if(fu(q,student[i].getscore())>q)
{
q=fu(q,student[i].getscore());
}
}
for(i=0;i<10;i++)
{
qu(student[i].getscore());//输出等级的函数调用
}
for(i=0;i<10;i++)
student[i].display();
return 0;
}

------------------------

一个比较严重的错误就是string初始化你用int值0赋值了,当然出错

还有一个输入的问题,cin一个char你可能会得到空格,用我这个保险一点。。

-------

还有一个建议,就是构造函数的默认值写在声明里好一点。。