学生信息管理系统

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

// 定义学生结构体
struct Student {
    char name[50];
    int age;
    float score;
};

// 添加学生信息
void addStudent(struct Student** students, int* numStudents, struct Student newStudent) {
    (*numStudents)++;
    *students = (struct Student*)realloc(*students, (*numStudents) * sizeof(struct Student));
    (*students)[*numStudents - 1] = newStudent;
}

// 显示所有学生信息
void displayStudents(struct Student* students, int numStudents) {
    for (int i = 0; i < numStudents; i++) {
        printf("Name: %s\n", students[i].name);
        printf("Age: %d\n", students[i].age);
        printf("Score: %.2f\n", students[i].score);
        printf("\n");
    }
}

// 根据姓名查找学生信息
struct Student findStudentByName(struct Student* students, int numStudents, char* name) {
    for (int i = 0; i < numStudents; i++) {
        if (strcmp(students[i].name, name) == 0) {
            return students[i];
        }
    }
    struct Student emptyStudent = {"", 0, 0.0};
    return emptyStudent;
}

int main() {
    struct Student* students = NULL; // 学生信息数组指针
    int numStudents = 0; // 学生数量

    // 添加学生信息示例
    addStudent(&students, &numStudents, {"Alice", 20, 85.5});
    addStudent(&students, &numStudents, {"Bob", 21, 90.0});
    addStudent(&students, &numStudents, {"Charlie", 22, 78.5});

    // 显示所有学生信息
    displayStudents(students, numStudents);

    // 根据姓名查找学生信息示例
    char nameToFind[] = "Bob";
    struct Student foundStudent = findStudentByName(students, numStudents, nameToFind);
    printf("Found student: \n");
    printf("Name: %s\n", foundStudent.name);
    printf("Age: %d\n", foundStudent.age);
    printf("Score: %.2f\n", foundStudent.score);
    printf("\n");

    // 释放内存
    free(students);

    return 0;
}

逐行解释:

  1. #include <stdio.h>#include <stdlib.h>#include <string.h>:引入标准库头文件,分别用于输入输出、动态内存分配和字符串处理。

  2. struct Student {...};:定义了一个名为Student的结构体,包含了学生的姓名、年龄和分数。

  3. void addStudent(struct Student** students, int* numStudents, struct Student newStudent) {...}:函数用于向学生数组中添加新的学生信息。

  4. void displayStudents(struct Student* students, int numStudents) {...}:函数用于显示所有学生的信息。

  5. struct Student findStudentByName(struct Student* students, int numStudents, char* name) {...}:函数用于根据姓名查找学生的信息。

  6. int main() {...}:主函数开始。

  7. struct Student* students = NULL;int numStudents = 0;:声明并初始化学生信息的数组指针和学生数量。

  8. addStudent(&students, &numStudents, {...});:调用addStudent函数添加了三个学生信息到学生数组中。

  9. displayStudents(students, numStudents);:调用displayStudents函数显示所有学生信息。

  10. char nameToFind[] = "Bob";:声明一个字符串用于查找学生信息。

  11. struct Student foundStudent = findStudentByName(students, numStudents, nameToFind);:调用findStudentByName函数根据姓名查找学生信息。

  12. free(students);:释放动态分配的内存空间。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值