请C++高手来帮帮忙,看看这个程序有什么问题啊。谢谢了!

2024-12-26 18:14:43
推荐回答(4个)
回答1:

我就看了上面几行就发现有问题了,你的私有变量如何可以输出呢~~所以建议你再好好检查一下。

回答2:

这段代码可以在VC下运行:
错误在于你打打印的时候,打印了所有的数量为MAX的学生。
应该打印数量为n的学生。

#include
#include
using namespace std;
class students
{
private:
string name;
int number;
public:
void getdata()
{
cout<<"请输入学号:";
cin>>number;
cout<<"请输入学生姓名:";
cin>>name;
}
void showdata()
{
cout<<" "<}
};
class mark:public students
{
public:
int English,Maths,Chinese,Total;
public:
void getdata()
{
students::getdata();
cout<<"请输入学生英语成绩:";
cin>>English;
cout<<"请输入学生语文成绩:";
cin>>Chinese;
cout<<"请输入学生数学成绩:";
cin>>Maths;
}
void sumdata()
{
Total=English+Maths+Chinese;
}
void showdata()
{
students::showdata();
cout<}
};
int main()
{
int n=0;
int sumMaths=0;
int sumEnglish=0;
int sumChinese=0;
float Eaverage,Maverage,Caverage;
char choice;
const MAX=50;
mark stu[MAX];

do
{
stu[n].getdata();
sumMaths+=stu[n].Maths;
sumChinese+=stu[n].Chinese;
sumEnglish+=stu[n].English;
stu[n].sumdata();
n++;
done:
cout<<"请选择是否继续(Y/N):";
cin>>choice;
if(choice!='y'&&choice!='n')
{
cout<<"Please choice y or n:"<goto done;
}
}
while(choice!='n');
Eaverage=sumEnglish/n;
Maverage=sumMaths/n;
Caverage=sumChinese/n;
cout<<"┏━━┳━━┳━━┳━━┳━━┳━━━┓"<cout<<"┃"<<"学号"<<"┃"<<"姓名"<<"┃"<<"英语"<<"┃"<<"语文"<<"┃"<<"数学"<<"┃"<<"Total"<<" ┃"<cout<<"┗━━┻━━┻━━┻━━┻━━┻━━━┛"</*for(n=0;n{
stu[n].showdata();
stu[n].sumdata();
}*/
for(int num =0;num{
stu[num].showdata();
stu[num].sumdata();
}

cout<<"英语平均成绩:"<cout<<"数学平均成绩:"<cout<<"语文平均成绩:"<
return 0;
}

回答3:

这个程序可以在vc6下直接编译 我刚才试了 你就新建一个控制台程序的工程 然后把这个文件加到里面就行了

后面的数字是因为你输出的时候循环次数太多了

for(n=0;n{
stu[n].showdata();
stu[n].sumdata();
}
这里的MAX是个常量50 所以如果你后面没有50个记录 他只能输出无意义得值了 这里的判断条件应该是你实际输入纪录的多少

回答4:

挺好,这个程序改得很好!