编写程序,输入n个学生的学号和成绩(有1位小数),按成绩从高到低排序输出,n小于50,学号小于10位
时间: 2024-06-08 17:05:55 浏览: 121
下面是Python代码实现:
```python
n = int(input("请输入学生人数:"))
students = []
for i in range(n):
temp = input("请输入第{}个学生的学号和成绩,用空格分隔:".format(i+1)).split()
students.append((temp[0], float(temp[1])))
students = sorted(students, key=lambda x: x[1], reverse=True)
print("按成绩从高到低排序后:")
for student in students:
print("{} {:.1f}".format(student[0], student[1]))
```
运行结果示例:
```
请输入学生人数:3
请输入第1个学生的学号和成绩,用空格分隔:2021001 89.5
请输入第2个学生的学号和成绩,用空格分隔:2021002 95.0
请输入第3个学生的学号和成绩,用空格分隔:2021003 88.5
按成绩从高到低排序后:
2021002 95.0
2021001 89.5
2021003 88.5
```
相关问题
C语言 编写程序,输入n个学生的学号和成绩(有1位小数),按成绩从高到低排序输出,n 小于50,学号小于10位
好的,这个问题可以使用结构体和排序算法来完成。下面是一个简单的示例代码:
```c
#include <stdio.h>
#include <string.h>
#define MAX_STUDENTS 50
// 学生结构体
typedef struct {
char id[11]; // 学号
float score; // 成绩
} Student;
// 插入排序算法
void insertionSort(Student arr[], int n) {
for (int i = 1; i < n; i++) {
Student tmp = arr[i];
int j = i - 1;
while (j >= 0 && arr[j].score < tmp.score) {
arr[j + 1] = arr[j];
j--;
}
arr[j + 1] = tmp;
}
}
int main() {
Student students[MAX_STUDENTS]; // 定义学生数组
int n; // 学生数量
// 读入学生数量和每个学生的信息
printf("请输入学生数量:");
scanf("%d", &n);
for (int i = 0; i < n; i++) {
printf("请输入第%d个学生的学号和成绩:", i + 1);
scanf("%s %f", students[i].id, &students[i].score);
}
// 按成绩从高到低排序
insertionSort(students, n);
// 输出所有学生的信息
printf("所有学生的信息如下:\n");
for (int i = 0; i < n; i++) {
printf("%s\t%.1f\n", students[i].id, students[i].score);
}
return 0;
}
```
这个程序可以读入学生数量和每个学生的学号和成绩,并按成绩从高到低排序输出所有学生的信息。你可以根据实际情况修改学生结构体的成员。
编写程序,输入n个学生的学号和成绩(有1位小数),按成绩从高到低排序输出,n小于50,学号小于10位。
好的,这是一个简单的C语言程序,可以实现你的要求:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_N 50
#define MAX_ID_LEN 10
// 学生结构体
typedef struct {
char id[MAX_ID_LEN+1]; // 学号
double score; // 成绩
} Student;
// 从高到低排序函数
int cmp(const void *a, const void *b) {
Student *s1 = (Student *)a;
Student *s2 = (Student *)b;
if (s1->score < s2->score) {
return 1;
} else if (s1->score > s2->score) {
return -1;
} else {
return strcmp(s1->id, s2->id); // 成绩相等按学号从小到大排序
}
}
int main() {
int n, i;
Student students[MAX_N];
scanf("%d", &n);
for (i = 0; i < n; i++) {
scanf("%s %lf", students[i].id, &students[i].score);
}
// 使用qsort函数从高到低排序
qsort(students, n, sizeof(Student), cmp);
// 输出排序后的结果
for (i = 0; i < n; i++) {
printf("%s %.1lf\n", students[i].id, students[i].score);
}
return 0;
}
```
这个程序首先定义了一个学生结构体,包含学号和成绩两个字段。在输入时,使用循环遍历n个学生,依次读入学号和成绩。在排序时,使用qsort函数从高到低排序,如果成绩相等则按照学号从小到大排序。在输出时,使用循环遍历n个学生,按照顺序输出学号和成绩。
阅读全文