C语言1、输入查询学生学号 2、通过顺序表二分法查找到学生基本信息及各科目信息 3、输入一个学号时,查询出此生的基本信息及所有课程情况,格式如下: 学号:xx 姓名:xxx 性别:x 宿舍号码:xxx 电话号码xxx 课程编号:xxx 课程名称:xxxxx 综合成绩:xxxx 实得学分:xx 课程编号:xxx 课程名称:xxxxx 综合成绩:xxxx 实得学分: xx … 共修:xx科,实得总学分为: xxx
时间: 2024-02-16 13:02:35 浏览: 190
C语言——建立一个链表表示学生的信息(学号、姓名、分数)
4星 · 用户满意度95%
好的,根据你的要求,我为你提供一个简单的 C 语言实现,使用顺序表和二分查找算法实现学生信息的管理。以下是代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义课程信息结构体
typedef struct Course {
char id[10];
char name[20];
int score;
int credit;
} Course;
// 定义学生信息结构体
typedef struct Student {
char id[10];
char name[20];
char gender;
char dorm[20];
char phone[20];
Course courses[10];
int course_count;
} Student;
// 定义学生信息管理结构体
typedef struct StudentManager {
Student students[100];
int student_count;
} StudentManager;
// 初始化学生信息管理结构体
void init(StudentManager *manager) {
manager->student_count = 0;
}
// 添加学生信息
void add_student(StudentManager *manager, Student student) {
manager->students[manager->student_count++] = student;
}
// 通过学号查找学生信息
Student *find_student_by_id(StudentManager *manager, char *id) {
int left = 0, right = manager->student_count - 1;
while (left <= right) {
int mid = (left + right) / 2;
int cmp = strcmp(manager->students[mid].id, id);
if (cmp == 0) {
return &manager->students[mid];
} else if (cmp < 0) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return NULL;
}
// 输出学生信息
void print_student(Student *student) {
printf("学号:%s 姓名:%s 性别:%c 宿舍号码:%s 电话号码:%s\n", student->id, student->name, student->gender, student->dorm, student->phone);
printf("课程信息:\n");
for (int i = 0; i < student->course_count; i++) {
Course course = student->courses[i];
printf("课程编号:%s 课程名称:%s 综合成绩:%d 实得学分:%d\n", course.id, course.name, course.score, course.credit);
}
printf("共修:%d科,实得总学分为:%d\n", student->course_count, get_total_credit(student));
}
// 计算学生总学分
int get_total_credit(Student *student) {
int total = 0;
for (int i = 0; i < student->course_count; i++) {
total += student->courses[i].credit;
}
return total;
}
int main() {
// 初始化学生信息管理结构体
StudentManager manager;
init(&manager);
// 添加学生信息
Student s1 = {"1001", "张三", 'M', "101", "13512345678", {{"001", "语文", 90, 4}, {"002", "数学", 80, 3}}, 2};
add_student(&manager, s1);
Student s2 = {"1002", "李四", 'F', "102", "13587654321", {{"001", "语文", 95, 4}, {"002", "数学", 85, 3}, {"003", "英语", 90, 3}}, 3};
add_student(&manager, s2);
// 通过学号查找学生信息并输出
Student *s = find_student_by_id(&manager, "1001");
if (s != NULL) {
print_student(s);
} else {
printf("未找到该学生\n");
}
return 0;
}
```
这是一个简单的 C 语言实现,你可以根据自己的需要进行修改和扩展。
阅读全文