C++问题,求帮看看代码里有哪里有错误,代码有点长,输出函数和排名函数好像有问题,运行的时候有错误。

``# include

include

include

using namespace std;
class StudentMessage
{
public:
string name;
int ID;
int num;
float Score[3];

} ;
class Student:public StudentMessage
{

private:
    float sum;
    float ave;
    Student *s;
public:
    ~Student();
    void input(void);
    void output(void);
    void search(void);
    void remove(void);
    void change(void);
    void MathsRank(void);
    void EnglishRank(void);
    void CRank(void);
    void SumRank(void);

};
Student::~Student()
{
delete(s);
}
void Student::input(void)
{
int i,num;
cout<<"请输入学生的人数:";
cin>>num;
s= new Student[num];
for(i=1;i<=num;i++)
{
cout<<"请输入第"< cin>>s[i-1].name;
cout<<"请输入第"< cin>>s[i-1].ID;
cout<<"请输入第"< cin>>s[i-1].Score[0];
cout<<"请输入第"< cin>>s[i-1].Score[1];
cout<<"请输入第"< cin>>s[i-1].Score[2];
s[i-1].sum = s[i-1].Score[0] + s[i-1].Score[1] + s[i-1].Score[2];

s[i-1].ave = s[i-1].sum /3;
}
}
void Student::output(void)
{
int i;
for(i=1;i<=num;i++)
{
cout<<"姓名:"< }
}
void Student::search(void)
{
string name;
cout cin>>name;

int i;  

for(i=1; i<=num; i++)  
{  
    if(name == s[i-1].name)  
    {  
        break;  
    }  
}  
        cout<<"姓名:"<<s[i-1].name<<endl<<"学号:"<<s[i-1].ID<<endl<<"数学成绩:"<<s[i-1].Score[0]<<endl<<"英语成绩:"<<s[i-1].Score[1]<<endl<<"C++成绩:"<<s[i-1].Score[2]<<endl<<"总分:"<<s[i-1].sum<<endl<<"平均分:"<<s[i-1].ave<<endl;

}
void Student::remove(void)
{
int n,i,j;
string name;
cout<<"请输入需要删除的学生的姓名:";
cin>>name;
for(i=1;i<=num;i++)
{
if(name==s[i-1].name)
{
n=i;
}
}
for(j=n+1;j<num;j++)
{
s[j-2]=s[j-1];
}
num=num-1;
}

void Student::change(void)
{
int i;
string n;
cout<<"请输入需要修改的学生的姓名:";
cin>>n;
for(i=0;i {
if(n==s[i].name)
{
break;
}
}
cout cout cout cin>>s[i].name;
cout<<"请输入该学生的学号:";
cin>>s[i].ID;
cout<<"请输入该学生的数学成绩:";
cin>>s[i].Score[0];
cout<<"请输入该学生的英语成绩:";
cin>>s[i].Score[1];
cout<<"请输入第该学生的C++成绩:";
cin>>s[i].Score[2];
s[i].sum = s[i].Score[0] + s[i].Score[1] + s[i].Score[2];

s[i].ave = s[i].sum / 3;
}
void Student::MathsRank(void)
{
int i,t;
for(i=1;i<=num;i++)
{
if(s[i].Score[0] > s[i-1].Score[0] && i-1>=0)
{
t=s[i-1].Score[0];
s[i-1].Score[0]=s[i].Score[0];
s[i].Score[0]=t;
}
cout< }
}
void Student::EnglishRank(void)
{
int i,t;
for(i=1;i {
if(s[i].Score[1] > s[i-1].Score[1] && i-1>=0)
{
t=s[i-1].Score[1];
s[i-1].Score[1]=s[i].Score[1];
s[i].Score[1]=t;
}
cout< }
}
void Student::CRank(void)
{ int i,t;
for(i=1;i {
if(s[i].Score[2] > s[i-1].Score[2] && i-1>=0)
{
t=s[i-1].Score[2];
s[i-1].Score[2]=s[i].Score[2];
s[i].Score[2]=t;
}
cout<<s[i-1].Score[2]<<endl;
}

}
void Student::SumRank(void)
{
int i,t;
for(i=1;i<=num;i++)
{
if(s[i].sum > s[i-1].sum && i-1>=0)
{
t=s[i-1].sum;
s[i-1].sum=s[i].sum;
s[i].sum=t;
}
cout<<s[i-1].sum<<endl;
}
}
int main()
{

cout<<"欢迎使用学生成绩管理系统"<<endl<<endl;        
cout<<"请按任意将进入学生管理系统:"<<endl<<endl;   
cout<<"请选择要操作的命令:"<<endl<<endl;    
cout<<"1 输入学生信息"<<endl<<endl;    
cout<<"2 输出学生信息"<<endl<<endl;    
cout<<"3 查找学生信息"<<endl<<endl;    
cout<<"4 删除学生信息"<<endl<<endl;    
cout<<"5 修改学生信息"<<endl<<endl;    
cout<<"6 学生数学成绩的排名"<<endl<<endl;    
cout<<"7 学生英语成绩的排名"<<endl<<endl;    
cout<<"8 学生C++成绩的排名"<<endl<<endl;    
cout<<"9 学生成绩总分的排名"<<endl<<endl;  
int i;
Student s;   
while(1)
{
    cout<<"请选择操作命令:";
    cin>>i;
    switch(i)
    {
        case 1:
                s.input();
                break;  
        case 2:
                s.output();
                break;
        case 3:
                s.search();
                break;
        case 4:
                s.remove();
                break;
        case 5:
                s.change();
                break;
        case 6:
                s.MathsRank();
                s.output();
                break;
        case 7:
                s.EnglishRank();
                s.output();
                break;  
        case 8:
                s.CRank();
                s.output();
                break;
        case 9:
                s.SumRank();
                s.output();
                break;
        default:
                break;
     } 
} 
return 0;   

}
`


c++

3个回答

StudentMessage::num 是什么时候赋值的?你定义它的目的是什么?

题外话:你的代码怎么那么多错漏,你编译过吗?

dalice1111
dalice1111 编译过,有的时候有错误,有的时候又没有错误
2 年多之前 回复

编译过,有的时候有错误,有的时候又没有错误

发帖专用方式。。不然代码错误很多。。。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!