为了账号安全,请及时绑定邮箱和手机立即绑定

用结构体写这个程序,求大神帮忙

用结构体写这个程序,求大神帮忙

C
慕粉1139395306 2017-03-10 23:00:50
有三个学生,每个学生的数据包括学号,姓名,三门课程的成绩,从键盘输入3个学生数据,要求输出三门课的评均成绩,以及最高平均分的学生的数据,包包括学号,姓名,三门课成绩,和平均成绩。
查看完整描述

1 回答

已采纳
?
习惯受伤

TA贡献885条经验 获得超1144个赞

我就直接写了一段代码,解释全在注释里:

#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;
}

来一张效果图:

//img1.sycdn.imooc.com//58c3682000016d1f03370544.jpg

//img1.sycdn.imooc.com//58c3682a0001950f02970434.jpg

查看完整回答
4 反对 回复 2017-03-11
  • 1 回答
  • 1 关注
  • 976 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号