以下是使用C++实现的解题思路:

  1. 首先定义一个结构体student,表示每个学生的姓名和四门功课的分数。
  2. 根据输入的N,创建一个大小为N的student数组,用于存储每个学生的信息。
  3. 使用for循环遍历N次,每次读取一位学生的姓名和四门功课的分数,并将其存入对应的student结构体中。
  4. 使用for循环遍历N次,计算每位学生的总分,并将总分打印到标准输出中。
  5. 使用for循环遍历N次,找出总分最高的那位同学,并将其姓名打印到标准输出中。
  6. 使用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;
}

希望对你有帮助

C++题目描述小明同学所在的班级共有N名同学期末考试时进行了数学、语文、英语、 地理四门功课的测试。现要将班里总分最高的同学评为学习小状元。请同学们帮助计算:1每位同学的总分是多少?2找出总分最高的那位同学。3找出所有成绩中最高的分数和最小的分数。输入描述第一行:有一个整数N表示有N名同学已知1≤N≤30 。后N行:每两行代表一个人的信息记录:包括学生的姓名及4门功课的分数:其中分数为整数每个分数

原文地址: https://www.cveoy.top/t/topic/hWp8 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录