数据结构2023/8/2 day2

#ifndef _FUN_H_
#define _FUN_H_
#include 
#include 
#include 
#define Max 40  //数组大小MAX为40
typedef enum  //定义一个枚举类型名字为Career
{
	Student,   
	Teacher
}Career;
/*********************************************************/
typedef struct XueYuan //定义了一个名为Xy的结构体类型
{
	char name[32];// 姓名
	char sex[32];      //性别
	Career Career;  //职业
	//嵌套定义一个共用体,判断职业是学生还是老师
	union 
	{
		int score; //分数
		char course[32]; //课程
	}Add;  //无名结构体声明Add
}Xy;
/**********************************************************/
//定义一个班级类型的结构体classroom
typedef struct 
{
	Xy  xy[Max]; //定义了一个学员数组名为xy的属性,数组大小为40
	int Nownumber; //定义了一个当前班级人数
}classroom;
/***********************************************************/
//声明回调函数
classroom *BANJI();
void Addnumber(classroom *BJ,Xy xuey);
void shownumber(classroom *BJ);
void find(classroom *BJ,const char *name);
void BJfree(classroom *BJ);



#endif
#include "fun.h"
//在堆区申请一个班级,并对班级进行初始化
classroom *BANJI()
{
	//在堆区进行申请
	classroom *BJ=(classroom *)malloc(sizeof(classroom));
	//判断能否申请成功
	if(BJ==NULL)
	{
			printf("班级申请失败\n");
			return NULL;
	}
	else if(BJ!=NULL) 
	{
			BJ->Nownumber=0;   //班级人数初始化
			printf("申请成功\n");
			return BJ;
	}
}
/******************************************************/
//定义添加学员函数,如果班级人数未满,则讲某个学员放入到该班级中

void Addnumber(classroom *BJ,Xy xuey)
{
	if(BJ->Nownumberxy[BJ->Nownumber] = xuey;
		BJ->Nownumber++;
		printf("%s已经添加到班级了\n",xuey.name);
	}
	else
	{
		printf("班级人数满了,无法继续添加人数\n");
	}
}
/************************************************************/
//定义输出函数,展示出当前班级的所有人员信息
void shownumber(classroom *BJ)
{
	printf("班级信息如下:\n");
	for(int i=0;iNownumber;i++)
	{
		Xy xuey = BJ->xy[i];
		if(xuey.Career == Student)
		{
			printf("姓名:%s,性别:%s,职业:学生,分数:%d\n",xuey.name,xuey.sex,xuey.Add.score);
		}
		else if(xuey.Career == Teacher)
		{
			printf("姓名:%s,性别:%s,职业:老师,所带课程:%s\n",xuey.name,xuey.sex,xuey.Add.course);
		}
	}
}
/**************************************************************************/
//定义查找函数,给定一个姓名,查找改名字是否为班级成员
void find(classroom *BJ,const char *name) 
{
	for(int i=0;iNownumber;i++)
	{
		Xy xuey = BJ->xy[i];
		if(strcmp(xuey.name,name) == 0) //用strcmp函数比较给定的名字是否和班级成员名字相等
		{
			printf("%s是该班成员\n",name);
			break;
		}
		else 
		{
			printf("%s不是该班成员\n",name);
			break;
		}
	}
}

/**************************************************************************/
//定义释放函数,将堆区申请的班级空间释放
void BJfree(classroom *BJ)
{
	if(BJ !=NULL)
	{
		free(BJ);  //释放堆区空间使用权
		BJ=NULL;
	}
}
#include "fun.h"
int main(int argc, const char *argv[])
{
	classroom *BJ =BANJI();//申请调用
	//给定班级学员
	Xy stu1={"吴二","男",Student,.Add.score =100};
	Xy stu2={"张三","男",Student,.Add.score =60};
	Xy stu3={"李四","男",Student,.Add.score =50};
	Xy teacher1={"王五","男",Teacher};
	strcpy(teacher1.Add.course,"数学");
	Xy teacher2={"小花","女",Teacher};
	strcpy(teacher2.Add.course,"英语");
	//调用添加学员函数
	Addnumber(BJ,stu1);
	Addnumber(BJ,stu2);
	Addnumber(BJ,stu3);
	Addnumber(BJ,teacher1);
	Addnumber(BJ,teacher2);
	//调用输出函数
	shownumber(BJ);
	//调用查找函数
	find(BJ,"小花");
	find(BJ,"嘉文四世");
	//调用释放函数
	BJfree(BJ);
	BJ =NULL;
	return 0;
}

数据结构2023/8/2 day2_第1张图片

你可能感兴趣的:(c语言,linux,ubuntu)