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

要求输出3门课的平均成绩,以及最高分的学生的数据(包括学号,姓名,3门课的成绩和平均成绩)
求高手帮忙啊
#include <iostream>
using namespace std;
struct Student
{
int num;
char name[20];
float score1;
float score2;
float score3;
float average;
}stu1,stu2,stu3,stu4,stu5,stu6,stu7,stu8,stu9,stu10;
int main()
{
int i,*max;
Student *p=&stu1;
for(i=0;i<10;p++)
{
cin>>p->num>>p->name>>p->score1>>p->score2>>p->score3;
}
Student *a=&stu1;
for(i=0;i<10;a++)
{
a->average=(a->score1+a->score2+a->score3)/3;
}
Student *b=&stu1;
*max=b->average;
for(i=1;i<10;b++)
{
if(*max<b->average)
max=b;
}
void print(Student *);
print(max);
return 0;
}
void print(Student *p)
{
cout<<p->num<<" "<<p->name<<" "<<p->score1<<" "<<p->score2<<" "<<p->score3<<" "<<p->average<<endl;
}

#include <iostream>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<STUDENTS_NUM; 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<STUDENTS_NUM; i++)

 {

  pStu[i]->average=(pStu[i]->score1+pStu[i]->score2+pStu[i]->score3)/3;

 }

 

 max = pStu[0]->average;

 iMyAverageIsTheMax = 0;

 for( i=1; i<STUDENTS_NUM; i++ )

 {

  if( max < pStu[i]->average )

  {

   max=pStu[i]->average;

   iMyAverageIsTheMax = i;  //记录平均成绩最大的索引

  }

 }

 

 print( pStu[iMyAverageIsTheMax] );

 

 holdScreen();      //让屏幕保持输出结果,不然一下子就没了

 return 0;

}

void print(pStudent pStu)

{

 cout<<pStu->num<<" "<<pStu->name<<" "<<pStu->score1<<" "<<pStu->score2<<" "<<pStu->score3<<" "<<pStu->average<<endl;

}

void holdScreen()

{

 char i;

 cout<<"Press any key to continue"<<endl;

 cin>>i;

}

 

 

 

追问

谢谢了哈,不过,您的有些语句我不是很熟悉,所以没有选满意答案

追答

没事啦,往后你一定会明白滴,加油咯。
我主要是把编程规范化来写的,有利于思路不混乱。

追问

嗯嗯,我也晓得规范点好,只是现在只是很粗浅地在模仿课本,可是又模仿不好

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2016-08-09
为什么一定要用指针呢?原则上应避免指针。
不用指针我可以帮你修改。

------------------------
#include <iostream>
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<stu[i].average)
max=stu[i];
}
void print(Student);
print(max);
cin.get();
return 0;
}
void print(Student p)
{
cout<<p.num<<" "<<p.name<<" "<<p.score1<<" "<<p.score2<<" "<<p.score3<<" "<<p.average<<endl;
}本回答被提问者采纳
第2个回答  2012-09-23
#include <iostream>
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<<p->num<<" "<<p->name<<" "<<p->score1<<" "<<p->score2<<" "<<p->score3<<" "<<p->average<<endl;
}追问

谢谢拉,可是这段代码运行之后还是有问题的,大概是我的代码错太多了

追答

for(i=1;iaverage average)
maxStu=b;
}
改为
b = &stu[1];
for(i=1;iaverage average)
maxStu=b;
}

本回答被网友采纳

C++ 有10个学生,从键盘输入10个学生的学号,姓名和3门课的成绩
int iAverage = 0;int iMyAverageIsTheMax = 0; \/\/记录平均成绩最大的那个学生的数组索引(也就是它的数组下脚标)pStudent pStu[STUDENTS_NUM] = {0}; \/\/一个容量为STUDENTS_NUM这么多个的结构体指针数组,数组中仅仅只是指针。指针在哪儿都是重点,要深入理解 pStudent pTemStu = NULL; ...

...学号,姓名、3门课程的成绩,从键盘输入10个学生的数据,要求输出学生3...
char stuName[20]; \/\/学生姓名 int stuscore[3]; \/\/学生3门课成绩 };int main() { int i, j;student stu[10];\/\/为了简单,此处只输入前3个学生的数据。如果要输入10个学生数据,把for中3改成10即可 for(i = 0; i < 3; i++) { printf("请输入第%d个学生学号:", i + 1);...

...包括学号,姓名,3门课的成绩,从键盘输入10个学生数据,
for(i=0;i<10;i++)printf("学号:%d 姓名:%s 成绩:%d %d %d 平均成绩:%d\\n",person[i]->number,person[i]->name[20],person->score[0],person->score[1],person->score[2],person->score[3]);}

用C++编写一个程序 : 输入10个学生的姓名、学号和成绩,将其中不及格...
{ int num;\/\/学号 char name[20];\/\/姓名 float score;\/\/成绩 }stt[n];void main(){ printf("学号\\t姓名\\t成绩\\n");for(int i=0;i<n;i++){ scanf("%d %s %f",&stt[i].num ,stt[i].name ,&stt[i].score );} \/\/用C++编写一个程序 : 输入10个学生的姓名、学号和成绩...

C++:输入10个学生的姓名、学号和成绩,将其中不及格者的姓名、学号和成绩...
int Score; \/\/成绩 public: \/\/外部成员关键字 Stu(){strcpy(Name,"无"); \/\/无参构造函数 ID=0;Score=0;} int Inp() \/\/从键盘输入学生信息函数 {printf("请输入姓名:"); scanf("%s",Name); printf("请输入学号:"); scanf("%d",&ID); printf("...

C++,从键盘输入10个学生的信息包括学号,姓名,成绩要求按每个学生的...
;charname[20];intscore[3];floataverage;}stud[SIZE];voidinput()\/*输入学生的信息*\/{inti;for(i=0;i<SIZE;i++){printf("第%d个学生的信息:\\n",i+1);scanf("%s%s%d%d%d",stud[i].id,stud[i].name,&stud[i].score[0],&stud[i].score[1],&stud[i].score[2]);stud[i]...

...有10个学生,每个学生的数据包括学号,姓名,及三门课成绩,总,平均...
}person[10];int i;printf("请输入10名学生的学号、姓名、及三门成绩:");for(i=0;i<10;i++)printf("学号:%d 姓名:%s 成绩:%d %d %d 平均成绩:%d\\n",person[i]->number,person[i]->name[20],person->score[0],person->score[1],person->score[2],person->score[3]);} ...

...学号、姓名、三门课的成绩,从键盘输入10个学生数据,要求打印出3...
printf("第%d个学生的信息:\\n",i+1);scanf("%s%s%d%d%d",stud[i].id,stud[i].name,&stud[i].score[0],&stud[i].score[1],&stud[i].score[2]);stud[i].total=stud[i].score[0]+stud[i].score[1]+stud[i].score[2];} for(i=0;i<SIZE;i++){ for(j=0;j<SIZE-i-...

c++输入10个学生的学号、姓名和成绩,计算并输出他们的平均成绩,并且将...
printf("姓名:%s 学号:%s 成绩:%.2f\\n", stu[i].name, stu[i].num, stu[i].value);} int main(void){ STUDENT stu[10];int i;float _ave = 0.0;for (i = 0; i < 10; ++i){ printf("输入第%d个学生信息(姓名,学号,成绩):", i+1);scanf(" %s %s %f",...

C++编程题:输入10个学生的姓名、学号和成绩,输出学生的成绩等级和不及格...
include<iostream> include<string> using namespace std;const int n=10;string name[n]; \/\/定义姓名数组 int num[n],score[n]; \/\/定义学号和成绩数组 int main(){int i;void input_data();int_data();cout<<endl<<"不及格名单:"<<endl;for(i=0;i<n;i++)if(score[i]<60...

相似回答