C++题目描述小明同学所在的班级共有N名同学期末考试时进行了数学、语文、英语、 地理四门功课的测试。现要将班里总分最高的同学评为学习小状元。请同学们帮助计算:1每位同学的总分是多少?2找出总分最高的那位同学。3找出所有成绩中最高的分数和最小的分数。输入描述第一行:有一个整数N表示有N名同学已知1≤N≤30 。后N行:每两行代表一个人的信息记录:包括学生的姓名及4门功课的分数:其中分数为整数每个分数
以下是使用C++实现的解题思路:
- 首先定义一个结构体student,表示每个学生的姓名和四门功课的分数。
- 根据输入的N,创建一个大小为N的student数组,用于存储每个学生的信息。
- 使用for循环遍历N次,每次读取一位学生的姓名和四门功课的分数,并将其存入对应的student结构体中。
- 使用for循环遍历N次,计算每位学生的总分,并将总分打印到标准输出中。
- 使用for循环遍历N次,找出总分最高的那位同学,并将其姓名打印到标准输出中。
- 使用for循环遍历四次,分别找出数学、语文、英语、地理四门功课的最高分和最低分,并将其打印到标准输出中。
以下是具体的C++代码实现:
#include <iostream>
#include <string>
using namespace std;
struct student {
string name;
int math;
int chinese;
int english;
int geography;
};
int main() {
int N;
cin >> N;
student students[N];
for (int i = 0; i < N; i++) {
cin >> students[i].name;
cin >> students[i].math;
cin >> students[i].chinese;
cin >> students[i].english;
cin >> students[i].geography;
}
int highestScore = 0;
string highestName;
int mathHighest = students[0].math;
int chineseHighest = students[0].chinese;
int englishHighest = students[0].english;
int geographyHighest = students[0].geography;
int mathLowest = students[0].math;
int chineseLowest = students[0].chinese;
int englishLowest = students[0].english;
int geographyLowest = students[0].geography;
for (int i = 0; i < N; i++) {
int totalScore = students[i].math + students[i].chinese + students[i].english + students[i].geography;
cout << totalScore << endl;
if (totalScore > highestScore) {
highestScore = totalScore;
highestName = students[i].name;
}
if (students[i].math > mathHighest) {
mathHighest = students[i].math;
}
if (students[i].chinese > chineseHighest) {
chineseHighest = students[i].chinese;
}
if (students[i].english > englishHighest) {
englishHighest = students[i].english;
}
if (students[i].geography > geographyHighest) {
geographyHighest = students[i].geography;
}
if (students[i].math < mathLowest) {
mathLowest = students[i].math;
}
if (students[i].chinese < chineseLowest) {
chineseLowest = students[i].chinese;
}
if (students[i].english < englishLowest) {
englishLowest = students[i].english;
}
if (students[i].geography < geographyLowest) {
geographyLowest = students[i].geography;
}
}
cout << highestName << endl;
cout << mathHighest << " " << mathLowest << endl;
cout << chineseHighest << " " << chineseLowest << endl;
cout << englishHighest << " " << englishLowest << endl;
cout << geographyHighest << " " << geographyLowest << endl;
return 0;
}
希望对你有帮助
原文地址: https://www.cveoy.top/t/topic/hWp8 著作权归作者所有。请勿转载和采集!