南京理工大学 程序设计基础(Ⅰ) SPOC | 学校专有课程 编程作业 第7章作业

第一题:分数最高的学生(100分)
题目内容:

输入若干学生信息(包括学号、姓名、C++整数成绩),计算其中的分数最高的学生,并输出该学生的信息。若有多个学生获得C++最高成绩,则输出先输入的学生信息。

输入格式:

依次输入若干学生信息(以学号、姓名、C++成绩为顺序),其中学号和C++成绩是正整数。若输入的学号非-1,则继续输入;否则停止输入。

输出格式:

依次输出C++成绩最高的学生学号、姓名、C++成绩,之间用空格分隔。最后不要有多余的空格。

输入样例:

1 张三 80

2 李四 85

3 王二 85

-1

输出样例:

2 李四 85

#include<iostream>
#include<string>
using namespace std;

class Student {
public:
	Student() {
		this->student_size = 0;
	}
	int student_size;
	int student_id;
	string student_name;
	int student_grade;
};

int main() {
	int max_grade = 0, max_index;
	Student s[100];
	while (true) {
		int id, grade;
		string name;
		cin >> id;
		if (id != -1) {
			s[s->student_size].student_id = id;
			cin >> name;
			s[s->student_size].student_name = name;
			cin >> grade;
			s[s->student_size].student_grade = grade;
			s->student_size++;
		} 
		else break;
	}

	int i;
	for (i = 0; i < s->student_size; i++) {
		if (max_grade < s[i].student_grade) {
			max_grade = s[i].student_grade;
			max_index = i;
		}
	}

	cout << s[max_index].student_id << " " << s[max_index].student_name << " " << s[max_index].student_grade << endl;
	return 0;
}

第二题:比赛评分(100分)
题目内容:

输入n个选手信息(包括序号、姓名、5名裁判的评分),计算每位选手的最终得分(去掉一个最高分、去掉一个最低分后的平均分),按最终得分从高到低的顺序输出所有选手信息(包括序号、姓名、最终得分)。若有多个选手最终分数相同成绩,这几位选手按输入的顺序输出选手信息。

定义结构player,并定义void input(player a[],int n)实现n个选手信息的输入;void
final(player a[], int n)实现最终得分的计算;void sort(player a[],int
n)实现将n个选手按最终得分排序;void output(player a[], int
n)实现将n个选手信息输出。在main函数中通过输入、函数调用等实现所有功能。

输入格式:

先输入一个整数n(1<=n<=40),再依次输入n个选手的信息(以学号、姓名、5名裁判的评分为顺序),其中裁判给的都是正整数分数。

输出格式:

按最终得分从高到低的顺序输出所有选手信息,每位选手的信息占据一行,序号、姓名、最终得分(不需要固定精度!)在一行输出,之间用空格分隔。最后不要有多余的空格。

输入样例:

3

1 张三 80 85 78 83 79

2 李四 85 90 79 84 88

3 王二 85 88 85 79 86

输出样例:

2 李四 85.6667

3 王二 85.3333

1 张三 80.6667

#include<iostream>
#include<string>
using namespace std;

class Player {
public:
	int player_id;
	string player_name;
	double player_grade[5];
	double player_final_grade;
};

void input(Player player[], int);

void final(Player player[], int);

void sort(Player player[],int);

void output(Player player[], int);

int main() {
	Player player[40];
	int n;
	cin >> n;

	input(player, n);
	final(player, n);
	sort(player, n);
	output(player, n);

	return 0;
}

void input(Player player[], int n) {
	for (int i = 0; i < n; i++) {
		cin >> player[i].player_id;
		cin >> player[i].player_name;

		for (int j = 0; j < 5; j++) {
			cin >> player[i].player_grade[j];
		}
	}
}

void final(Player player[], int n) {
	//寻找最大值
	for (int i = 0; i < n; i++) {
		double max_grade = 0;
		for (int j = 0; j < 5; j++) {
			if (max_grade < player[i].player_grade[j]) max_grade = player[i].player_grade[j];
		}

		//寻找最小值
		double min_grade = 100;
		for (int k = 0; k < 5; k++) {
			if (min_grade > player[i].player_grade[k]) min_grade = player[i].player_grade[k];
		}
		//求平均值
		int final_grade = 0;
		for (int k = 0; k < 5; k++) player[i].player_final_grade += player[i].player_grade[k];
		player[i].player_final_grade -= max_grade;
		player[i].player_final_grade -= min_grade;
		player[i].player_final_grade /= 3;
	}	
}

void sort(Player player[],int n) {
	for (int i = 0; i < n - 1; i++) {
		for (int j = 0; j < n - 1 - i; j++) {
			if (player[j].player_final_grade < player[j + 1].player_final_grade) {
				Player temp_player;
				temp_player = player[j];
				player[j] = player[j + 1];
				player[j + 1] = temp_player;
			}
		}
	}
}

void output(Player player[], int n) {
	for (int i = 0; i < n; i++) {
		cout << player[i].player_id << " " << player[i].player_name << " " << player[i].player_final_grade << endl;
	}
}

希望今天的工图考试稍微好那么一点点~~
GOD BLESS ME!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值