数据结构day2

定义一个学员类型,包含成员属性:姓名、性别、职业、和另一个变量,如果职业是学生,则另一个变量是分数,如果职业是老师,则另一个变量是所带课程。

再封装一个班级类型,包含成员属性:学员数组、班级当前人数,数组大小MAX为40;

操作:

1> 在堆区申请一个班级,并对班级进行初始化

2> 定义添加学员函数,如果班级人数未满,则将某个学员放入到该班级中

3> 定义输出函数,展示出当前班级的所有人员信息

4> 定义查找函数,给定一个姓名,查找该名字是否未该班级成员

5> 定义释放函数,将堆区申请的班级空间释放

#include
#include
#include
#define MAX 40
union Job
{
    int score;
    char class[20];
};
struct Stu
{
    char name[MAX];
    char sex[10];
    char job[20];
    union Job j;
};
struct Class
{
    struct Stu s[MAX];
    int human;
};
//申请班级,并进行初始化
struct Class *class(int num)
{
    struct Class *p=(struct Class *)malloc(sizeof(struct Class)*num);
    p->human=0;
}
//添加学员
void student(struct Class *p,int num)
{
    int i; 
    for(i=0;i     {
        printf("请输入第%d个学员的姓名:",i+1);
        scanf("%s",(p+i)->s[i].name);
        printf("请输入第%d个学员的性别:",i+1);
        scanf("%s",(p+i)->s[i].sex);
        printf("请输入第%d个学员的职业:",i+1);
        scanf("%s",(p+i)->s[i].job);
        if(strcmp(p[i].s[i].job,"student")==0)
        {
            printf("请输入第%d个学员的成绩:",i+1);
            scanf("%d",&(p+i)->s[i].j.score);
        }
        else if(strcmp(p[i].s[i].job,"teachar")==0)
        {
            printf("请输入第%d个学员所带课程:",i+1);
            scanf("%s",(p+i)->s[i].j.class);
        }
    }
}
//输出班级
void put(struct Class *p,int num)
{
    int i;
    for(i=0;i     {
        printf("%s\t%s\t%s\t",(p+i)->s[i].name,(p+i)->s[i].sex,(p+i)->s[i].job);
        if(strcmp(p[i].s[i].job,"student")==0)
        {
            printf("%d\n",(p+i)->s[i].j.score);
        }
        else if(strcmp(p[i].s[i].job,"teachar")==0)
        {
            printf("%s\n",(p+i)->s[i].j.class);
        }
    }
}
//查找
void find(struct Class *p,int num)
{
    char a[100];
    printf("请输入要查找的学员姓名:\n");
    scanf("%s",a);
    int i;
    for(i=0;i     {
        if(strcmp(p[i].s->name,a)==0)
        {
            printf("有该学员!\n");
            break;
        }
        else
        {
            printf("没有该学员!\n");
        }
    }
}
//释放空间
void myfree(struct Class *p)
{
    free(p);
    p=NULL;
}
int main(int argc, const char *argv[])
{
    struct Class *g=class(3);
    student(g,3);
    put(g,3);
    find(g,3);
    myfree(g);
    g=NULL;
    return 0;
}
思维导图:https://mubu.com/app/edit/home/7B0XQKap4FD#m

数据结构day2_第1张图片

 

你可能感兴趣的:(数据结构,c语言,算法)