c语言输入n个学生的学号和成绩,按成绩从高到低排序后输出,n 小于50,学号小于10位代码
时间: 2023-08-31 07:43:10 浏览: 191
### 回答1:
:好的,这个问题我可以回答。以下是示例代码:
```c
#include <stdio.h>
#include <string.h>
struct student {
char id[11];
int score;
};
int main() {
int n;
scanf("%d", &n);
struct student stu[n];
for (int i = 0; i < n; i++) {
scanf("%s%d", stu[i].id, &stu[i].score);
}
for (int i = 0; i < n - 1; i++) {
for (int j = i + 1; j < n; j++) {
if (stu[i].score < stu[j].score) {
struct student temp = stu[i];
stu[i] = stu[j];
stu[j] = temp;
}
}
}
for (int i = 0; i < n; i++) {
printf("%s %d\n", stu[i].id, stu[i].score);
}
return 0;
}
```
这是一个简单的结构体排序程序,按成绩从高到低排序后输出。
### 回答2:
题目要求用C语言实现输入n个学生的学号和成绩,并按成绩从高到低的顺序输出。给出以下代码实现:
```c
#include <stdio.h>
#define MAX_STUDENTS 50
#define MAX_ID_LENGTH 10
typedef struct {
char id[MAX_ID_LENGTH];
int score;
} Student;
void swap(Student *a, Student *b) {
Student temp = *a;
*a = *b;
*b = temp;
}
void sort_students(Student students[], int n) {
int i, j;
for(i = 0; i < n-1; i++) {
for(j = 0; j < n-i-1; j++) {
if(students[j].score < students[j+1].score) {
swap(&students[j], &students[j+1]);
}
}
}
}
int main() {
Student students[MAX_STUDENTS];
int n, i;
printf("请输入学生的个数:");
scanf("%d", &n);
printf("请输入学生的学号和成绩:\n");
for(i = 0; i < n; i++) {
printf("学生 %d :\n", i+1);
printf("学号:");
scanf("%s", students[i].id);
printf("成绩:");
scanf("%d", &students[i].score);
}
sort_students(students, n);
printf("按成绩从高到低排序的结果为:\n");
for(i = 0; i < n; i++) {
printf("学生 %d :学号:%s 成绩:%d\n", i+1, students[i].id, students[i].score);
}
return 0;
}
```
以上代码中,首先通过结构体`Student`定义了学生的学号和成绩。然后定义了一个用于交换两个学生的函数`swap`,和一个用于按成绩排序学生的函数`sort_students`。在`main`函数中,首先读取学生的个数`n`,然后通过循环读取`n`个学生的学号和成绩。最后调用`sort_students`函数对学生进行排序,并依次输出排序结果。
### 回答3:
实现这个功能,我们可以使用结构体数组来存储学生的学号和成绩。首先,定义一个结构体来表示每个学生的信息:
```c
#include<stdio.h>
struct Student {
long long int id;
int score;
};
```
然后,在主函数中,首先输入学生的数量n,然后利用一个循环遍历n次,分别输入每个学生的学号和成绩,将他们存入结构体数组中:
```c
int main() {
int n;
printf("请输入学生的数量n:");
scanf("%d", &n);
struct Student students[n];
int i;
for(i=0; i<n; i++) {
printf("请输入学生%d的学号和成绩:", i+1);
scanf("%lld%d", &students[i].id, &students[i].score);
}
}
```
接下来,我们可以使用冒泡排序算法按照成绩从高到低对结构体数组进行排序:
```c
void bubbleSort(struct Student students[], int n) {
int i, j;
struct Student temp;
for(i=0; i<n-1; i++) {
for(j=0; j<n-i-1; j++) {
if(students[j].score < students[j+1].score) {
temp = students[j];
students[j] = students[j+1];
students[j+1] = temp;
}
}
}
}
```
最后,输出排序后的结果:
```c
int main() {
// ...
bubbleSort(students, n);
printf("按照成绩从高到低排序后的结果:\n");
for(i=0; i<n; i++) {
printf("学生%d -- 学号:%lld 成绩:%d\n", i+1, students[i].id, students[i].score);
}
return 0;
}
```
这样,便实现了按成绩从高到低排序并输出的功能。
阅读全文