修改一简单VC++

来源:百度知道 编辑:UC知道 时间:2024/06/08 13:15:11
原题: 结构体应用
有5个学生,每个学生的数据结构包括姓名(name),数学成绩(cMath),英语成绩(cEnglish);体育成绩(cGym),总平均分(ave)。
要求: (1) 从键盘输入5个学生的姓名、3门课的成绩,原数据显示;(2)计算3门课总平均成绩;(3)按总平均成绩的高低依次显示各学生的信息。

我的程序:
#include<iostream.h>
struct STUDENT
{
char name[8];
char id[10];
int score[3];
double ave;
};
STUDENT InputData()
{
STUDENT stu;
cout<<"姓名";
cin>>stu.name;
cout<<"学号";
cin>>stu.id;
int aveResult=0;
cout<<"三门成绩:数学 英语 体育"<<endl;
cin>>stu.score[0]>>stu.score[1]>>stu.score[2];
return stu;
}
void CalAverage(STUDENT *data,int nNum)
{
for(int i=0;i<nNum;i++)
data[i].ave =(data[i].score[0]+data[i].score[1]+data[i].score[2])/3.0;
}
void PrintData(STUDENT *data,int nNum)
{
cout<<"\n 学号\t姓名\t数学\t英语\t体育\t平均分\n&quo

交换的时候有问题。。你的程序是左值赋值了。
我给你改了下。。程序如下。
#include<iostream.h>
struct STUDENT
{
char name[8];
char id[10];
int score[3];
double ave;
};
STUDENT InputData()
{
STUDENT stu;
cout<<"姓名";
cin>>stu.name;
cout<<"学号";
cin>>stu.id;
int aveResult=0;
cout<<"三门成绩:数学 英语 体育"<<endl;
cin>>stu.score[0]>>stu.score[1]>>stu.score[2];
return stu;
}
void CalAverage(STUDENT *data,int nNum)
{
for(int i=0;i<nNum;i++)
data[i].ave =(data[i].score[0]+data[i].score[1]+data[i].score[2])/3.0;
}
void PrintData(STUDENT *data,int nNum)
{
cout<<"\n 学号\t姓名\t数学\t英语\t体育\t平均分\n";
STUDENT temp;
for(int l=0;l<nNum-1;l++)
{
for (int i = l+1; i<nNum; i++)
{
if (d