C语言入门:结构体数组与学生成绩排序

需积分: 31 0 下载量 16 浏览量 更新于2024-08-20 收藏 1.13MB PPT 举报
"这篇教程主要介绍了C语言中的结构体数组应用,通过实例展示了如何处理学生信息,包括学号、姓名和考试成绩,并按照成绩排序输出。" 在C语言中,结构体(struct)是一种复合数据类型,允许我们将不同类型的数据组合在一起形成一个新的数据类型。结构体数组则是在结构体基础上的扩展,它可以存储多个结构体对象,非常适合用来表示具有共同属性的多个实体,例如这里的学生信息。 结构体的定义通常包括以下部分: ```c struct Student { int id; // 学号 char name[20]; // 姓名,假设姓名最长为20个字符 float score; // 成绩 }; ``` 在这个例子中,`struct Student`定义了一个新的数据类型,包含了学号(id)、姓名(name)和考试成绩(score)三个字段。为了使用这个结构体,我们需要声明一个结构体变量或者结构体数组。声明结构体数组如下: ```c struct Student students[100]; ``` 这样就创建了可以存储100个学生信息的数组。 输入100个学生的信息,可以使用`scanf()`函数: ```c for (int i = 0; i < 100; i++) { scanf("%d %s %f", &students[i].id, students[i].name, &students[i].score); } ``` 注意,输入姓名时需要考虑到字符串的特性,`%s`会读取空格前的所有字符,所以如果姓名包含空格,需要其他方法处理。 接下来,对学生成绩进行排序,可以使用冒泡排序、选择排序等算法。这里以冒泡排序为例: ```c for (int i = 0; i < 99; i++) { for (int j = 0; j < 99 - i; j++) { if (students[j].score < students[j + 1].score) { // 交换两个学生的位置 struct Student temp = students[j]; students[j] = students[j + 1]; students[j + 1] = temp; } } } ``` 最后,按照成绩从高到低输出学生信息: ```c for (int i = 0; i < 100; i++) { printf("ID: %d, Name: %s, Score: %.2f\n", students[i].id, students[i].name, students[i].score); } ``` C语言的这种结构体数组的应用使得处理复杂的数据结构变得简单,尤其是在处理大量具有相同属性的数据时,如学生管理系统、员工信息库等。同时,C语言的编译系统会将高级语言转换成机器可以直接执行的指令,保证了程序的高效运行。通过学习和熟练掌握结构体数组,开发者可以更灵活地组织和管理数据,提高程序的可读性和实用性。