结构体

发布于 2019-12-19  0 次阅读


例题1

有4名学生,每个学生的属性包括学号、姓名、出生日期和成绩,要求通过指针方法输出这4名学生的所有信息。

    #include
    #define  st struct student
    struct birth
    {
        int year,month,day;
    };
    st
    {
        int score,num;
        char name[5];
        struct birth date;
    };
    void main()
    {
        st xue[4],*p;int i;
        
        for(i=0;inum,p->score,p->date.year,p->date.month,p->date.day);
    }

例题2

编写一程序,实现电话号码查询。假设有一电话号码表,信息包括户主的姓名、户主地址、电话号码,输入一个电话号码,找出该号码对应的户主的姓名、地址。

    #include
    #define st struct tong
    st
    {
        int num;char name[5];char add[10];
    };
    void main()
    {
        st ren[100];int i,num,n,x,flag=0,cur;
        printf("请输出电话表的人数:");
        scanf("%d",&n);
        for(i=0;inum,&q->add);
            getchar();
            q->next=NULL;
            if(head==NULL)
                head=q;
            else
                p->next=q;
            p=q;
        }
        return(head);
    }
    void main()
    {
        st *xue,*p;int x;
        xue=creat();
        printf("请输入你要找的学号:");
        scanf("%d",&x);
        for(p=xue;p->xue!=x;p=p->next);
        if(p!=NULL)
            printf("这个人的姓名是%s,学号是%d,电话是%d,地址是%s\n",p->name,p->xue,p->num,p->add);
        else
            printf("没有这个人");
    }

例题4

某班有4名学生,每个学生的属性包括学号、姓名、成绩,要求通过链表的方法找出成绩最高者和最低者的姓名、学号和成绩。(要求用链表实现)

    #include
    #define st struct student
    #include
    #include
    st
    {
        int num,xue;
        char name[5];
        st *next;
    };
    st *creat()
    {
        st *head=NULL,*p,*q;int n,i;
        printf("请输入班级人数:");
        scanf("%d",&n);
        for(i=1;iname,&q->xue,&q->num);
            getchar();
            q->next=NULL;
            if(head==NULL)
                head=q;
            else
                p->next=q;
            p=q;
        }
        return(head);
    }
    void Max(st *head)
    {
        st *p=head;char name[5]={'\0'};
        int num,score=0;
        while(p!=NULL)
        {
        if(p->num>score)
        {
            score=p->num;
            strcpy(name,p->name);
            num=p->xue;
        
        }
        p=p->next;
        }
        printf("最高的姓名是%s,学号是%d,成绩是%d\n",name,num,score);
    
    }
    void Min(st *head)
    {
        st *p=head;char name[5]={'\0'};
        int num,score=999;
        while(p!=NULL)
        {
        if(p->numnum;
            strcpy(name,p->name);
            num=p->xue;
        
        }
        p=p->next;
        }
        printf("最低的姓名是%s,学号是%d,成绩是%d\n",name,num,score);
    
    }
    void main()
    {
        st *xue;
        xue=creat();
        Max(xue);
        Min(xue);    
    }

本当の声を響かせてよ