C语言结构体案例
1. 什么是结构体
结构体是C语言中一种自定义数据类型,它允许我们将不同类型的数据组合在一起,形成一个新的数据类型。结构体可以包含多个成员变量,每个成员变量可以是不同的数据类型,如整型、字符型、浮点型等。
结构体的定义使用关键字struct,后面是结构体的名称,然后是一对大括号{},在大括号中定义结构体的成员变量。
2. 结构体的基本用法
2.1 定义结构体
下面是一个简单的结构体定义的例子:
struct Student {
    int id;
    char name[20];
    int age;
    float score;
};
上面的代码定义了一个名为Student的结构体,它包含了4个成员变量:idnameagescore
2.2 声明结构体变量
定义结构体只是定义了一个新的数据类型,并没有分配内存空间。要使用结构体,需要声明结构体变量,然后分配内存空间。
struct Student stu;
上面的代码声明了一个名为stu的结构体变量,它的类型是struct Student
2.3 访问结构体成员
可以使用.运算符来访问结构体的成员变量。
stu.id = 1001;
strcpy(stu.name, "Tom");
stu.age = 18;
stu.score = 90.5;
上面的代码给结构体变量的成员变量赋值。
3. 结构体案例:学生信息管理系统
3.1 需求分析
我们要设计一个学生信息管理系统,该系统可以记录学生的学号、姓名、年龄和成绩,并对学生信息进行增加、删除、修改和查操作。
3.2 数据结构设计
为了实现上述功能,我们可以定义一个结构体Student来表示学生信息。
struct Student {
    int id;
    char name[20];
    int age;
    float score;
};
3.3 增加学生信息
可以定义一个函数addStudent来实现增加学生信息的功能。
void addStudent(struct Student *students, int *count) {
    printf("请输入学生学号:");
    scanf("%d", &students[*count].id);
    printf("请输入学生姓名:");
    scanf("%s", students[*count].name);
    printf("请输入学生年龄:");
    scanf("%d", &students[*count].age);
    printf("请输入学生成绩:");
    scanf("%f", &students[*count].score);
    (*count)++;
    printf("添加成功!\n");
}
3.4 删除学生信息
可以定义一个函数deleteStudent来实现删除学生信息的功能。
void deleteStudent(struct Student *students, int *count, int id) {
    int i, j;
    for (i = 0; i < *count; i++) {
        if (students[i].id == id) {
            for (j = i; j < *count - 1; j++) {
                students[j] = students[j + 1];
            }
            (*count)--;
            printf("删除成功!\n");
            return;
        }
    }
    printf("未到该学生!\n");
}
3.5 修改学生信息
可以定义一个函数modifyStudent来实现修改学生信息的功能。
void modifyStudent(struct Student *students, int count, int id) {
    int i;
    for (i = 0; i < count; i++) {
        if (students[i].id == id) {
            printf("请输入学生学号:");
            scanf("%d", &students[i].id);
            printf("请输入学生姓名:");
            scanf("%s", students[i].name);
            printf("请输入学生年龄:");
            scanf("%d", &students[i].age);
            printf("请输入学生成绩:");
            scanf("%f", &students[i].score);
            printf("修改成功!\n");
            return;
        }
    }
    printf("未到该学生!\n");
}
3.6 查学生信息
可以定义一个函数findStudent来实现查学生信息的功能。
void findStudent(struct Student *students, int count, int id) {
    int i;
    for (i = 0; i < count; i++) {
        if (students[i].id == id) {
            printf("学生学号:%d\n", students[i].id);
            printf("学生姓名:%s\n", students[i].name);
            printf("学生年龄:%d\n", students[i].age);
            printf("学生成绩:%.2f\n", students[i].score);
            return;
        }
    }
    printf("未到该学生!\n");
}
3.7 主函数
int main() {
    struct Student students[100];
    int count = 0;
    int choice;
    int id;
    while (1) {
        printf("学生信息管理系统\n");
        printf("1. 增加学生信息\n");
        printf("2. 删除学生信息\n");
        printf("3. 修改学生信息\n");
        printf("4. 查学生信息\n");
        printf("5. 退出\n");
        printf("请选择操作:");
        scanf("%d", &choice);
        switch (choice) {
            case 1:
                addStudent(students, &count);
                break;
            case 2:
switch的用法c语言                printf("请输入要删除的学生学号:");
                scanf("%d", &id);
                deleteStudent(students, &count, id);
                break;
            case 3:
                printf("请输入要修改的学生学号:");
                scanf("%d", &id);
                modifyStudent(students, count, id);
                break;
            case 4:
                printf("请输入要查的学生学号:");
                scanf("%d", &id);
                findStudent(students, count, id);
                break;
            case 5:
                printf("谢谢使用!\n");
                return 0;
            default:
                printf("无效的操作!\n");
                break;
        }
    }
}
4. 总结
通过以上的案例,我们学习了C语言中结构体的基本用法,并实现了一个简单的学生信息管理系统。结构体是C语言中非常重要的概念,它可以帮助我们更好地组织和管理数据。在实际开发中,我们经常会用到结构体来表示复杂的数据结构,如链表、树等。掌握了结构体的使用,对于C语言程序的编写将会更加灵活和高效。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。