能否提供一个C语言代码示例,展示如何使用结构体变量和指向结构体类型的指针作为函数参数,实现按照学号升序排列并输出学生学号、姓名以及两个成绩(分别标记为成绩1和成绩2)的功能?
时间: 2025-01-01 13:39:45 浏览: 23
当然可以,以下是一个简单的C语言代码示例,它展示了如何使用结构体变量和指针作为函数参数,并实现对学生的学号、姓名和成绩的排序:
```c
#include <stdio.h>
#include <string.h>
// 定义学生结构体
struct Student {
int id;
char name[50];
float score1, score2;
};
// 按照学号升序排序的辅助函数
void sortStudents(struct Student *arr, int size) {
for (int i = 0; i < size - 1; i++) {
for (int j = 0; j < size - i - 1; j++) {
if (arr[j].id > arr[j + 1].id) {
struct Student temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
// 函数原型,接收一个指向学生结构体数组的指针和数组长度
void printSortedStudents(struct Student *students, int size) {
sortStudents(students, size);
for (int i = 0; i < size; i++) {
printf("学号:%d 姓名:%s 成绩1:%f 成绩2:%f\n", students[i].id, students[i].name, students[i].score1, students[i].score2);
}
}
int main() {
// 创建一个学生数组实例
struct Student students[] = {
{1, "张三", 85, 90},
{2, "李四", 92, 88},
{3, "王五", 78, 86},
{4, "赵六", 95, 92}
};
// 计算学生数量
int size = sizeof(students) / sizeof(students[0]);
// 打印排序后的学生信息
printSortedStudents(students, size);
return 0;
}
```
在这个例子中,`sortStudents`函数接受一个指向`Student`类型的指针和数组大小,然后通过冒泡排序算法按学号对数组元素进行排序。`printSortedStudents`函数则打印出已排序的学生信息。
阅读全文