一个班有10名同学,每名同学都有如下信息:学号,姓名,三门课程的成绩。请编写程序输入全班同学的信息,并且按第一门课程的成绩从小到大排序后输出。(用C语言编程)
时间: 2024-03-06 09:51:23 浏览: 140
好的,以下是用C语言编写的程序:
```c
#include <stdio.h>
#include <string.h>
struct student {
int id;
char name[20];
float score1;
float score2;
float score3;
};
void sort(struct student s[], int n);
int main() {
struct student s[10];
int i;
for (i = 0; i < 10; i++) {
printf("请输入第%d个学生的信息:\n", i+1);
printf("学号:");
scanf("%d", &s[i].id);
printf("姓名:");
scanf("%s", s[i].name);
printf("三门课程的成绩:");
scanf("%f%f%f", &s[i].score1, &s[i].score2, &s[i].score3);
}
sort(s, 10);
printf("按第一门课程的成绩从小到大排序后的学生信息如下:\n");
printf("学号\t姓名\t课程1成绩\t课程2成绩\t课程3成绩\n");
for (i = 0; i < 10; i++) {
printf("%d\t%s\t%.1f\t\t%.1f\t\t%.1f\n",
s[i].id, s[i].name, s[i].score1, s[i].score2, s[i].score3);
}
return 0;
}
void sort(struct student s[], int n) {
int i, j;
struct student temp;
for (i = 0; i < n-1; i++) {
for (j = 0; j < n-i-1; j++) {
if (s[j].score1 > s[j+1].score1) {
temp = s[j];
s[j] = s[j+1];
s[j+1] = temp;
}
}
}
}
```
程序中使用了一个结构体 `student` 来存储每个同学的信息,包括学号、姓名和三门课程的成绩。在 `main` 函数中,首先通过循环依次输入每个同学的信息,然后调用 `sort` 函数对学生信息进行排序。排序的方式是按照第一门课程的成绩从小到大排序。最后,按照格式输出排序后的学生信息。
注意,输入姓名时使用了 `%s` 格式,但是结构体中的 `name` 字段是一个字符数组,所以不需要使用 `&`。同时,为了让输出的格式更整齐,使用了 `\t` 来控制各个字段之间的间距。
阅读全文