一个班上有30名学生,每个学生的数据作为一个记录,每个记录包括学号、姓名、三门课程的成绩和三门课程平均成绩。从键盘输入学生的学号、姓名及三门课的成绩。要求打印三门课程平均成绩最高分的学生记录(要求使用指
时间: 2023-03-29 15:03:29 浏览: 383
学生信息管理系统,1、每一条记录包括一个学生的学号、姓名、3门课成绩、平均成绩。
针实现)。
我可以回答这个问题。首先,需要定义一个结构体来存储学生的信息,包括学号、姓名、三门课程的成绩和三门课程平均成绩。然后,定义一个指向结构体的指针,用于动态分配内存。接着,从键盘输入学生的学号、姓名及三门课的成绩,并计算出三门课程的平均成绩。最后,遍历所有学生记录,找到平均成绩最高的学生记录,并打印出来。这个过程可以使用指针实现,具体实现方法可以参考以下代码:
#include <stdio.h>
#include <stdlib.h>
#define MAX_STUDENT_NUM 30
typedef struct {
int id;
char name[20];
float score[3];
float avg_score;
} Student;
int main() {
Student *students[MAX_STUDENT_NUM];
int student_num = ;
// 从键盘输入学生信息
while (student_num < MAX_STUDENT_NUM) {
Student *s = (Student *) malloc(sizeof(Student));
if (s == NULL) {
printf("Error: out of memory\n");
break;
}
printf("Enter student id: ");
scanf("%d", &s->id);
printf("Enter student name: ");
scanf("%s", s->name);
printf("Enter scores of three courses: ");
scanf("%f%f%f", &s->score[], &s->score[1], &s->score[2]);
s->avg_score = (s->score[] + s->score[1] + s->score[2]) / 3;
students[student_num++] = s;
}
// 找到平均成绩最高的学生记录
Student *max_avg_score_student = students[];
for (int i = 1; i < student_num; i++) {
if (students[i]->avg_score > max_avg_score_student->avg_score) {
max_avg_score_student = students[i];
}
}
// 打印平均成绩最高的学生记录
printf("Student with highest average score:\n");
printf("id: %d\n", max_avg_score_student->id);
printf("name: %s\n", max_avg_score_student->name);
printf("scores: %.2f %.2f %.2f\n", max_avg_score_student->score[], max_avg_score_student->score[1], max_avg_score_student->score[2]);
printf("average score: %.2f\n", max_avg_score_student->avg_score);
// 释放内存
for (int i = ; i < student_num; i++) {
free(students[i]);
}
return ;
}
阅读全文