C语言结构体和枚举类型示例:学生信息管理

本示例展示了如何在C语言中使用结构体和枚举类型来创建学生信息结构,并通过输入学号、姓名、性别和电话号码来查询学生信息。

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

enum SEX{ GIRL, BOY };

struct SStudent{
    char num[15]; //学号
    char name[20]; //姓名
    enum SEX sex; //性别
};

struct SStudentEx{
    struct SStudent base;
    char Phone[20];
};

int main(){
    int n;
    scanf('%d', &n);
    struct SStudentEx a[10];
    for(int i=0; i<n; i++){
        scanf('%s %s %s %s', a[i].base.num, a[i].base.name, &a[i].base.sex, a[i].Phone);
    }
    char searchName[20];
    scanf('%s', &searchName);
    for(int i=0; i<n; i++){
        if(strcmp(a[i].base.name, searchName) == 0){
            printf('%s\n',a[i].Phone);
            return 0;
        }
    }
}

为什么性别要取址其他的不用?

因为性别是枚举类型,它的取值只能是枚举值中的一个,而不是任意的字符串或数字。因此在输入时需要用取址符'&'来获取其地址,以便将输入的字符串转换为相应的枚举值。其他的变量如char数组等都可以直接获取其地址。

代码解析:

  1. 枚举类型定义: enum SEX{ GIRL, BOY }; 定义了一个枚举类型 SEX,包含两个枚举值 GIRLBOY
  2. 结构体定义: struct SStudent 定义了学生信息结构体,包含学号、姓名和性别。
  3. 嵌套结构体定义: struct SStudentEx 扩展了 SStudent 结构体,添加了电话号码字段。
  4. 输入信息: 程序通过 scanf() 函数获取学生的学号、姓名、性别和电话号码。
  5. 查询信息: 程序通过 scanf() 获取要查询的姓名,并使用 strcmp() 函数比较姓名是否一致,找到匹配的学生信息并输出电话号码。

注意:

  • 在输入性别时,需要使用取址符 & 获取枚举变量的地址,因为枚举值是存储在内存中的,需要通过地址来访问。
  • 该示例代码仅展示了结构体和枚举类型的基本用法,实际应用中可能需要进行更复杂的处理,例如数据存储、排序等。
C语言结构体和枚举类型示例:学生信息管理

原文地址: https://www.cveoy.top/t/topic/nLAh 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录