假定程序中已经有三个学生信息了,现在需要插入一个新的学生信息。具体要求如下: 1)必须用数组来存储学生信息,包括学号,班级,姓名,三门课程的成绩; 2)新输入的学生信息插入后,按照学生三门课程总成绩从高到低输出排序后的学生信息。 3)已有的三个学生的信息可以在数组初始化时静态赋值,要求这三个学生的信息必须是: 1001,11,zhang,99.5,88.5,89.5,277.5 1002,22,li,77.9,56.5,87.5,221.9 1003,11,wang,92.5,99.0,60.5,252.0 程序输入: 1004 12 zhao 95.8 85.6 74.9 输出如下: 1001,11,zhang,99.5,88.5,89.5,277.5 1004,12,zhao,95.8,85.6,74.9,256.3 1003,11,wang,92.5,99.0,60.5,252.0 1002,22,li,77.9,56.5,87.5,221.9 (注意:下划线标注部分为输入。输出的学生信息每个学生一行,行与行之间无空行;学生的各项信息之间用逗号分隔,采用英文标点,每行最后一列是三门课程的总成绩) c语言代码
时间: 2023-06-07 21:11:51 浏览: 77
#include <stdio.h>
#include <stdlib.h>
typedef struct {
int id;
int class;
char name[20];
float score1;
float score2;
float score3;
float total_score;
} Student;
int main() {
Student students[4] = {
{1001, 11, "zhang", 99.5, 88.5, 89.5, 0},
{1002, 22, "li", 77.9, 56.5, 87.5, 0},
{1003, 11, "wang", 92.5, 99.0, 60.5, 0},
};
Student new_student;
printf("请输入新学生信息:\n");
printf("学号:");
scanf("%d", &new_student.id);
printf("班级:");
scanf("%d", &new_student.class);
printf("姓名:");
scanf("%s", new_student.name);
printf("三门课程的成绩:\n");
scanf("%f%f%f", &new_student.score1, &new_student.score2, &new_student.score3);
new_student.total_score = new_student.score1 + new_student.score2 + new_student.score3;
students[3] = new_student;
int i, j;
Student temp;
// 冒泡排序
for (i = 0; i < 4 - 1; i++) {
for (j = 0; j < 4 - 1 - i; j++) {
if (students[j].total_score < students[j+1].total_score) {
temp = students[j];
students[j] = students[j+1];
students[j+1] = temp;
}
}
}
printf("\n学生信息按照总成绩从高到低排序如下:\n");
for (i = 0; i < 4; i++) {
printf("%d,%d,%s,%.1f,%.1f,%.1f,%.1f\n", students[i].id, students[i].class, students[i].name, students[i].score1, students[i].score2, students[i].score3, students[i].total_score);
}
return 0;
}