使用c语言书写代码:定义30名学生信息包含成绩,姓名和学号,实际人数从键盘上输入: 采用选择法实现学号从低到高排序,并输出每一个学生所有信息。
时间: 2024-12-17 09:51:50 浏览: 53
你可以使用C语言编写这样的程序,首先定义一个结构体`Student`存储学生的姓名、学号和成绩,然后通过`main`函数获取用户输入的实际人数,接着创建动态数组来存储学生信息。这里是一个基本的示例:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义学生结构体
typedef struct {
int id; // 学号
char name[50]; // 姓名
float score; // 成绩
} Student;
// 比较函数用于选择排序
int compareStudents(const void *a, const void *b) {
return ((const Student *)a)->id - ((const Student *)b)->id;
}
void printStudentInfo(Student *students, int numStudents) {
for (int i = 0; i < numStudents; i++) {
printf("学号:%d, 姓名:%s, 成绩:%f\n", students[i].id, students[i].name, students[i].score);
}
}
int main() {
int numStudents;
printf("请输入学生总数:");
scanf("%d", &numStudents);
if (numStudents > 30) {
printf("最多只能保存30名学生,请重新输入。\n");
return 1;
}
// 动态分配内存
Student *students = malloc(numStudents * sizeof(Student));
if (!students) {
perror("Memory allocation failed");
return 1;
}
// 获取并输入学生信息
for (int i = 0; i < numStudents; i++) {
printf("请输入第%d名学生的学号、姓名和成绩:\n", i + 1);
scanf("%d", &students[i].id);
scanf("%s", students[i].name);
scanf("%f", &students[i].score);
}
// 对学号进行选择排序
qsort(students, numStudents, sizeof(Student), compareStudents);
// 输出排序后的学生信息
printStudentInfo(students, numStudents);
free(students); // 释放内存
return 0;
}
```
阅读全文