使用c语言书写代码:定义30名学生信息包含成绩,姓名和学号,实际人数从键盘上输入: (1)采用交换法实现成绩从高到低排序,并输出每一个学生所有信息。 (2)采用选择法实现学号从低到高排序,并输出每一个学生所有信息。
时间: 2024-11-09 20:25:57 浏览: 130
首先,我们需要定义一个结构体来存储学生的个人信息,包括姓名、学号和成绩。然后编写函数分别实现排序并输出学生的全部信息。这里是一个简单的示例:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义学生信息结构体
typedef struct {
char name[50];
int student_id;
float score;
} Student;
// 比较函数用于成绩排序
int compare_scores(const void* a, const void* b) {
const Student* s1 = (const Student*)a;
const Student* s2 = (const Student*)b;
return (s2->score > s1->score) ? -1 : ((s2->score == s1->score) ? 0 : 1);
}
// 比较函数用于学号排序
int compare_ids(const void* a, const void* b) {
const Student* s1 = (const Student*)a;
const Student* s2 = (const Student*)b;
return (s1->student_id < s2->student_id) ? -1 : ((s1->student_id == s2->student_id) ? 0 : 1);
}
// 学生信息交换法排序并输出
void sort_and_output_scores(Student students[], int n) {
qsort(students, n, sizeof(Student), compare_scores);
for (int i = 0; i < n; i++) {
printf("Name: %s, Student ID: %d, Score: %.2f\n", students[i].name, students[i].student_id, students[i].score);
}
}
// 学生信息选择法排序并输出
void sort_and_output_ids(Student students[], int n) {
qsort(students, n, sizeof(Student), compare_ids);
for (int i = 0; i < n; i++) {
printf("Name: %s, Student ID: %d, Score: %.2f\n", students[i].name, students[i].student_id, students[i].score);
}
}
int main() {
int num_students;
printf("Enter the number of students: ");
scanf("%d", &num_students);
// 动态分配内存存储学生信息
Student* students = (Student*)malloc(num_students * sizeof(Student));
if (!students) {
printf("Memory allocation failed.\n");
return 1;
}
for (int i = 0; i < num_students; i++) {
printf("Enter student %d's name: ", i + 1);
scanf("%s", students[i].name);
printf("Enter student %d's id: ", i + 1);
scanf("%d", &students[i].student_id);
printf("Enter student %d's score: ", i + 1);
scanf("%f", &students[i].score);
}
// 排序并输出成绩
sort_and_output_scores(students, num_students);
// 输出学号
printf("\nSorted by student ID:\n");
sort_and_output_ids(students, num_students);
free(students); // 释放内存
return 0;
}
```
阅读全文