输入五个学生信息,找出单科最高成绩及总分最高

建立学生信息的数据结构,每个学生信息包含学号、姓名、语数外三门课的成绩。编写input函数,用于输入学生的信息;编写max1函数,用于找单科成绩最高的学生;编写max3函数,用于找总分最高的学生;编写print函数,用于输出学生的信息。

由键盘输入5个学生的信息,找出单科成绩最高及总分最高的学生,并输出在屏幕上。

基于部分chartgpt编写
以下是一个基于结构体的C语言示例代码,实现了学生信息的录入、最高单科成绩和总分计算、以及学生信息的输出等功能:

#include <stdio.h>
#include <string.h>

#define MAX_LEN 20 // 字符串最大长度
#define NUM_SUBJECTS 3 // 科目数量

// 定义学生结构体
struct student {
    int id;
    char name[MAX_LEN];
    int grades[NUM_SUBJECTS];
    int total;
};

// 读取学生信息
void input(struct student *s) {
    printf("请输入学生的学号、姓名和三门课程的成绩(用空格分隔):");
    scanf("%d %s %d %d %d", &(s->id), s->name, &(s->grades[0]), &(s->grades[1]), &(s->grades[2]));
    // 计算总分
    s->total = s->grades[0] + s->grades[1] + s->grades[2];
}

// 找出最高单科成绩的学生
void max1(struct student *stu_arr, int n) {
    int max_grade = 0;
    int max_index = -1;
    int i, j;
    for (i = 0; i < NUM_SUBJECTS; i++) { // 遍历科目
        for (j = 0; j < n; j++) { // 遍历学生
            if (stu_arr[j].grades[i] > max_grade) {
                max_grade = stu_arr[j].grades[i];
                max_index = j;
            }
        }
        // 输出该科目最高分学生的信息
        printf("单科成绩最高的学生(科目%d): %d, %s, %d\n", i+1, stu_arr[max_index].id, stu_arr[max_index].name, max_grade);
        max_grade = 0; // 重置最高分,即将计算下一个科目
    }
}

// 找出总分最高的学生
void max3(struct student *stu_arr, int n) {
    int max_total = 0;
    int max_index = -1;
    for (int i = 0; i < n; i++) {
        if (stu_arr[i].total > max_total) {
            max_total = stu_arr[i].total;
            max_index = i;
        }
    }
    // 输出总分最高学生的信息
    printf("总分最高的学生: %d, %s, %d\n", stu_arr[max_index].id, stu_arr[max_index].name, max_total);
}

// 输出学生信息
void print(struct student s) {
    printf("学生信息:%d, %s, %d, %d, %d, %d\n", s.id, s.name, s.grades[0], s.grades[1], s.grades[2], s.total);
}

int main() {
    struct student s[5];
    int i;

    // 读入5个学生的信息
    for (i = 0; i < 5; i++) {
        input(&s[i]);
    }

    // 输出每个学生的信息
    printf("所有学生的信息如下:\n");
    for (i = 0; i < 5; i++) {
        print(s[i]);
    }

    // 找出单科成绩最高的学生
    max1(s, 5);

    // 找出总分最高的学生
    max3(s, 5);

    return 0;
}

在实现最高单科成绩和总分计算函数 max1 和 max3 时,我们使用了嵌套的循环结构来遍历学生信息,并用变量 max_grade 和 max_total 分别记录最高单科成绩和总分,并记录最高分所对应的学生索引 max_index。最后输出该学生的信息即可。

如果以上回答对您有所帮助,点击一下采纳该答案~谢谢