华清 8月2 数据结构day2 作业

#include 
#include 
#include 

#define  MAX 40

typedef struct Student    //定义一个学员类型
{
	char name[20];       //姓名
	char xinbie[10];     //性别
	char ziye[20];  //职业
	union                 //这里引用一个共用体,因为这里的学生和老师要求的不一样
	{
		int fensu;         //如果职业是学生,这里就是分数
		char suodaikecen[20];       //如果职业是老师,这里就是所带课程
	}def;                  //以后要用这个共用体,直接用def就可以来定义
} Student;               //用了typedef,之后的编译就可以用Student来使用这个结构体

typedef struct Class   //定义一个班级类型,包括学员信息(student)和个数(number)
{
	Student student [MAX];   //利用了学员类型来创建一个学员(student)数组,大小为40
	int number;              //班级当前人数
} Class;

/**************因为我要操作的是一个班级类型,所以后面的类型都能用Class来代替********************/
Class *inttClass()       //在堆区申请一个班级,定义一个inttClass函数来实现,前面的Class是函数的类型
{
	Class *class=(Class *)malloc(sizeof(Class));   //在堆区申请一个班级结构体的大小的空间,申请的是class
	class ->number=0;           //对班级进行初始化
	return class;              
}

/****************定义一个添加学员的函数*****************/
void addStudent(Class *class,Student student)   //定义一个添加学员的函数,需要刚才申请的class空间和定义的学员结构体类型
{
	if(class->numberstudent[class->number]=student;    //把成员信息添加到成员结构体定义的student中
		class->number++;
	}
	else
	{
		printf("班级人数已满,无法添加学员.\n");
	}
}

/****************************定义一个输出函数,展示出当前班级的所有成员的信息******************/
void printClass(Class *class)          //定义一个printClass函数
{
	printf("班级人员信息:\n");
	for(int i=0;inumber;i++)
	{
		printf("姓名:%s\t",class->student[i].name);    //classs是一个指针类型,但是student是普通类型
		printf("性别:%s\t",class->student[i].xinbie);
		printf("职业:%s\t",class->student[i].ziye);
		if(strcmp(class->student[i].ziye,"学生")==0)
		{
			printf("分数:%d\t",class->student[i].def.fensu);
		}
		else
		{
			printf("所带课程:%s\n",class->student[i].def.suodaikecen);
		}
		putchar(10);
	}
}

int findStudent(Class *class,char *name)   //定义一个寻找是否在该班级的函数
{
	for(int i=0;inumber;i++) 
	{
		if(strcmp(class->student[i].name,name)==0)    //如果存在这个成员的姓名
		{
			printf("李白是这个班级的成员\n");
		}
	}
}

void freeClass(Class *class)                   //定义一个释放申请空间的函数
{
	free(class);
	class=NULL;
}

int main(int argc, const char *argv[])
{
	Class *class=inttClass();
	Student student_0={"李白","男","学生",.def.fensu=100};
	addStudent(class,student_0);
	Student student_1={"杜甫","男","学生",.def.fensu=90};
	addStudent(class,student_1);
	Student student_2={"李清照","女","老师",.def.suodaikecen="古诗词"};
	addStudent(class,student_2);
	printClass(class);
	int index=findStudent(class,"李白");
	freeClass(class);

	return 0;
}

数据结构day1 - GitMind

数据结构day2 - GitMind

你可能感兴趣的:(数据结构)