用结构体写这个程序,求大神帮忙
有三个学生,每个学生的数据包括学号,姓名,三门课程的成绩,从键盘输入3个学生数据,要求输出三门课的评均成绩,以及最高平均分的学生的数据,包包括学号,姓名,三门课成绩,和平均成绩。

慕粉1139395306
浏览 977回答 1
1回答
-
习惯受伤
我就直接写了一段代码,解释全在注释里:#include <iostream>
using namespace std;
//学生总数
const int MaxStudentNo = 3;
//结构体
struct Student
{
//学号
int no;
//姓名
char name[20];
//第一门课成绩
double score1;
//第二门课成绩
double score2;
//第三门课成绩
double score3;
};
//获取学生的成绩平均值
double getStudentAvgScore(Student* student) {
return (student->score1 + student->score2 + student->score3) / 3;
}
//输出学生信息
void outputStudentInfo(Student* student) {
cout << "------------------------------------" << endl;
cout << "学号:" << student->no << endl;
cout << "姓名:" << student->name << endl;
cout << "成绩:"
<< student->score1 << ","
<< student->score2 << ","
<< student->score3 << endl;
cout << "平均成绩:" << getStudentAvgScore(student) << endl;
cout << "------------------------------------" << endl;
}
//从一些学生中获取平均成绩最高的学生
Student* getMaxAvgStudent(Student* students[]) {
Student* retStudent = students[0];
double max = getStudentAvgScore(retStudent);
for (int i = 1; i < MaxStudentNo; i++)
{
//如果这个学生没有初始化,则略过
if (!students[i]) {
continue;
}
double score = getStudentAvgScore(students[i]);
if (max < score)
{
max = score;
retStudent = students[i];
}
}
return retStudent;
}
int main()
{
//初始化学生指针数组,并输入学生信息
Student* students[MaxStudentNo] = {0};
for (int i = 0; i < MaxStudentNo; i++)
{
cout << "请输入第" << i + 1 << "位学生的信息:" << endl;
Student* s = new Student();
cout << "学号:" << endl;
cin >> s->no;
cout << "姓名:" << endl;
cin >> s->name;
cout << "第一门课成绩:" << endl;
cin >> s->score1;
cout << "第二门课成绩:" << endl;
cin >> s->score2;
cout << "第三门课成绩:" << endl;
cin >> s->score3;
students[i] = s;
}
//先输出所有学生的详细信息
cout << endl << MaxStudentNo << "位学生的详细信息:" << endl;
for (int i = 0; i < MaxStudentNo; i++)
{
outputStudentInfo(students[i]);
}
//再输出平均成绩最高的学生
cout << endl << "平均成绩最高的学生信息:" << endl;
Student* maxAvgScoreStudent = getMaxAvgStudent(students);
outputStudentInfo(maxAvgScoreStudent);
//清理资源,退出程序
delete maxAvgScoreStudent;
delete[] students;
return 0;
}来一张效果图:
打开App,查看更多内容