C++ 有10个学生,从键盘输入10个学生的学号,姓名和3门课的成绩

2024-12-02 22:06:34
推荐回答(3个)
回答1:

#include using namespace std;

#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<num<<" "<name<<" "<score1<<" "<score2<<" "<score3<<" "<average<

}

void holdScreen()

{

 char i;

 cout<<"Press any key to continue"<

 cin>>i;

}

 

 

 

回答2:

为什么一定要用指针呢?原则上应避免指针。
不用指针我可以帮你修改。

------------------------
#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 max=stu[i];
}
void print(Student);
print(max);
cin.get();
return 0;
}
void print(Student p)
{
cout<}

回答3:

#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<num<<" "<name<<" "<score1<<" "<score2<<" "<score3<<" "<average<}