有10个学生,每个学生的数据包括学号、姓名、3门课程的成绩,从键盘输入10个学生数据,要求输出3门课程总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课程成绩、平均分数)。用c语言
时间: 2025-01-12 12:05:26 浏览: 44
以下是一个用C语言编写的程序,可以实现你所描述的功能:
```c
#include <stdio.h>
#include <string.h>
#define NUM_STUDENTS 10
#define NUM_COURSES 3
#define MAX_NAME_LENGTH 50
struct Student {
char id[20];
char name[MAX_NAME_LENGTH];
float scores[NUM_COURSES];
float average;
};
void inputData(struct Student students[]);
void calculateAverages(struct Student students[]);
void findTopStudent(struct Student students[], struct Student *topStudent);
void printResults(struct Student students[], struct Student topStudent);
int main() {
struct Student students[NUM_STUDENTS];
struct Student topStudent;
inputData(students);
calculateAverages(students);
findTopStudent(students, &topStudent);
printResults(students, topStudent);
return 0;
}
void inputData(struct Student students[]) {
for (int i = 0; i < NUM_STUDENTS; i++) {
printf("请输入第%d个学生的学号: ", i + 1);
scanf("%s", students[i].id);
printf("请输入第%d个学生的姓名: ", i + 1);
scanf("%s", students[i].name);
for (int j = 0; j < NUM_COURSES; j++) {
printf("请输入第%d个学生的第%d门课程成绩: ", i + 1, j + 1);
scanf("%f", &students[i].scores[j]);
}
printf("\n");
}
}
void calculateAverages(struct Student students[]) {
for (int i = 0; i < NUM_STUDENTS; i++) {
float sum = 0;
for (int j = 0; j < NUM_COURSES; j++) {
sum += students[i].scores[j];
}
students[i].average = sum / NUM_COURSES;
}
}
void findTopStudent(struct Student students[], struct Student *topStudent) {
*topStudent = students[0];
for (int i = 1; i < NUM_STUDENTS; i++) {
if (students[i].average > topStudent->average) {
*topStudent = students[i];
}
}
}
void printResults(struct Student students[], struct Student topStudent) {
float totalAverage = 0;
for (int i = 0; i < NUM_COURSES; i++) {
float courseTotal = 0;
for (int j = 0; j < NUM_STUDENTS; j++) {
courseTotal += students[j].scores[i];
}
totalAverage += courseTotal / NUM_STUDENTS;
printf("第%d门课程的平均成绩: %.2f\n", i + 1, courseTotal / NUM_STUDENTS);
}
printf("三门课程的总平均成绩: %.2f\n\n", totalAverage / NUM_COURSES);
printf("最高分的学生的数据:\n");
printf("学号: %s\n", topStudent.id);
printf("姓名: %s\n", topStudent.name);
for (int i = 0; i < NUM_COURSES; i++) {
printf("第%d门课程成绩: %.2f\n", i + 1, topStudent.scores[i]);
}
printf("平均分数: %.2f\n", topStudent.average);
}
```
这个程序首先定义了一个`Student`结构体来存储学生的信息。然后它包含四个主要函数:
1. `inputData`:从键盘输入10个学生的数据。
2. `calculateAverages`:计算每个学生的平均分。
3. `findTopStudent`:找出平均分最高的学生。
4. `printResults`:打印结果,包括每门课程的平均成绩和三门课程的总平均成绩,以及最高分学生的所有信息。
在`main`函数中,我们按照顺序调用这些函数来实现整个程序的功能。
阅读全文