第一题:分数最高的学生(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!