C语言结构体和枚举类型示例:学生信息管理
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数组等都可以直接获取其地址。
代码解析:
- 枚举类型定义:
enum SEX{ GIRL, BOY };定义了一个枚举类型SEX,包含两个枚举值GIRL和BOY。 - 结构体定义:
struct SStudent定义了学生信息结构体,包含学号、姓名和性别。 - 嵌套结构体定义:
struct SStudentEx扩展了SStudent结构体,添加了电话号码字段。 - 输入信息: 程序通过
scanf()函数获取学生的学号、姓名、性别和电话号码。 - 查询信息: 程序通过
scanf()获取要查询的姓名,并使用strcmp()函数比较姓名是否一致,找到匹配的学生信息并输出电话号码。
注意:
- 在输入性别时,需要使用取址符
&获取枚举变量的地址,因为枚举值是存储在内存中的,需要通过地址来访问。 - 该示例代码仅展示了结构体和枚举类型的基本用法,实际应用中可能需要进行更复杂的处理,例如数据存储、排序等。
原文地址: https://www.cveoy.top/t/topic/nLAh 著作权归作者所有。请勿转载和采集!