#include
#define STUDENTS_NUM 3 //预定义,学生个数,以后学生数有改动时,只需更改这一处就OK了,我测试的时候只测了3个学生的
typedef struct _Student
{
int num;
char name[20];
float score1;
float score2;
float score3;
float average;
}Student,*pStudent; //不是有多少个学生就要定义多少个结构体名出来,typedef的用法如果不清楚,可以查一下
void print(pStudent stu);
void holdScreen();
int main()
{
int i=0, max=0; //养成良好习惯,变量定义时最好要自己初始化(虽然C++编译器会自动初始化,但是如果是指针的话,在C里面就难定了)
int iAverage = 0;
int iMyAverageIsTheMax = 0; //记录平均成绩最大的那个学生的数组索引(也就是它的数组下脚标)
pStudent pStu[STUDENTS_NUM] = {0}; //一个容量为STUDENTS_NUM这么多个的结构体指针数组,数组中仅仅只是指针。指针在哪儿都是重点,要深入理解
pStudent pTemStu = NULL; //typedef让pStudent等同于Student *
for(i=0; i { pStu[i] = new Student; //初始化结构体,指针指向这个结构体 cin>>pStu[i]->num>>pStu[i]->name>>pStu[i]->score1>>pStu[i]->score2>>pStu[i]->score3; } for(i=0; i { pStu[i]->average=(pStu[i]->score1+pStu[i]->score2+pStu[i]->score3)/3; max = pStu[0]->average; iMyAverageIsTheMax = 0; for( i=1; i { if( max < pStu[i]->average ) { max=pStu[i]->average; iMyAverageIsTheMax = i; //记录平均成绩最大的索引 } } print( pStu[iMyAverageIsTheMax] ); holdScreen(); //让屏幕保持输出结果,不然一下子就没了 return 0; } void print(pStudent pStu) { cout< } void holdScreen() { char i; cout<<"Press any key to continue"< cin>>i;
为什么一定要用指针呢?原则上应避免指针。
不用指针我可以帮你修改。
------------------------
#include
using namespace std;
struct Student
{
int num;
char name[20];
float score1;
float score2;
float score3;
float average;
}stu[10];
int main()
{
int i;
Student max;
for(i=0;i<10;i++)
{
cin>>stu[i].num>>stu[i].name>>stu[i].score1>>stu[i].score2>>stu[i].score3;
}
for(i=0;i<10;i++)
{
stu[i].average=(stu[i].score1+stu[i].score2+stu[i].score3)/3;
}
max=stu[0];
for(i=1;i<10;i++)
{
if(max.average
}
void print(Student);
print(max);
cin.get();
return 0;
}
void print(Student p)
{
cout<
#include
using namespace std;
struct Student
{
int num;
char name[20];
float score1;
float score2;
float score3;
float average;
} stu[10];
void print(Student *);
int main()
{
int i;
Student *maxStu;
Student *p=&stu[0];
for(i=0;i<10;p++)
{
cin>>p->num>>p->name>>p->score1>>p->score2>>p->score3;
}
Student *a=&stu[0];
for(i=0;i<10;a++)
{
a->average=(a->score1+a->score2+a->score3)/3;
}
Student *b=&stu[0];
maxStu = b;
for(i=1;i<10;b++)
{
if(maxStu->average < b->average)
maxStu=b;
}
print(maxStu);
return 0;
}
void print(Student *p)
{
cout<