物联网23级1班10个学生成绩信息处理。 提示:学生成绩信息包括:学号、姓名、成绩1、成绩2等。 定义结构体数组完成存储学生成绩信息(线性结构顺序存储) 编程实现上述要求,实现对学生信息进行查询、排序等处理操作。用C语言写
时间: 2024-09-21 15:04:40 浏览: 55
在C语言中,我们可以定义一个结构体来表示每个学生的成绩信息,然后创建一个结构体数组来存储10个学生的信息。首先,我们定义一个名为`Student`的结构体:
```c
#include <stdio.h>
#include <string.h>
// 定义结构体,包含学号、姓名和两门课程的成绩
typedef struct {
int id; // 学号
char name[50]; // 姓名
int score1; // 成绩1
int score2; // 成绩2
} Student;
// 结构体数组,用于存放10个学生的数据
Student students[10];
// 插入学生记录到数组中
void add_student(Student* array, int index, const char* name, int id, int score1, int score2) {
strcpy(array[index].name, name);
array[index].id = id;
array[index].score1 = score1;
array[index].score2 = score2;
}
// 查询特定学生的信息
void search_student(const Student* array, int id, Student* result) {
for (int i = 0; i < 10; i++) {
if (array[i].id == id) {
*result = array[i];
break;
}
}
}
// 排序函数示例:这里仅提供升序排列成绩1
void sort_scores(Student* array) {
int temp_id, temp_score1;
for (int i = 0; i < 9; i++) {
for (int j = 0; j < 9 - i; j++) {
if (array[j].score1 > array[j + 1].score1) {
temp_id = array[j].id;
temp_score1 = array[j].score1;
array[j].id = array[j + 1].id;
array[j].score1 = array[j + 1].score1;
array[j + 1].id = temp_id;
array[j + 1].score1 = temp_score1;
}
}
}
}
int main() {
// 初始化和添加学生数据
for (int i = 0; i < 10; i++) {
Student temp;
printf("请输入学生 %d 的信息 (ID, 姓名, 成绩1, 成绩2): ", i + 1);
scanf("%d", &temp.id);
fgets(temp.name, sizeof(temp.name), stdin);
temp.score1 = ...; // 从输入获取成绩1
temp.score2 = ...; // 从输入获取成绩2
add_student(students, i, temp.name, temp.id, temp.score1, temp.score2);
}
// 示例查询和排序操作
Student search_result;
int target_id;
printf("请输入你要查询的学生ID: ");
scanf("%d", &target_id);
search_student(students, target_id, &search_result);
printf("查询结果: ID=%d, Name=%s, Score1=%d, Score2=%d\n",
search_result.id, search_result.name, search_result.score1, search_result.score2);
sort_scores(students);
printf("成绩排序后的列表:\n");
for (int i = 0; i < 10; i++) {
printf("ID: %d, 姓名: %s, 成绩1: %d, 成绩2: %d\n",
students[i].id, students[i].name, students[i].score1, students[i].score2);
}
return 0;
}
```
这个程序定义了一个结构体和数组,实现了添加学生、查询学生和简单地按成绩排序的功能。注意,对于成绩1的输入,你需要填充实际获取分数的部分,例如通过`scanf`或其他方法。在实际应用中,你可能需要更复杂的搜索和排序算法,以及错误检查。以上代码仅为基本演示。
阅读全文