栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言综合题(链表、结构体、指针)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言综合题(链表、结构体、指针)

链表A,每个节点存放一个新的链表B1,B2,B3,B4,B5的头结点。
场景:一个年级,相当链表A
该年级5个班,每个班5个人,相当于链表B1–B5
做一个学生成绩管理系统
学生成绩有语文 数学 英语
功能: 录入成绩 找最三科总分的最高分 最低分 算出平均分

#include 
#include 
#include 

struct student
{
        char name[100];
        int china;
        int math;
        int english;
        int sum;
        float average;
        struct student *next;
};

struct class
{
        int num;
        struct student *msg;
        struct class *next;
};

struct class *addClass(struct class *head,struct class *new)
{
        if(head == NULL){
                head = new;
                return head;
        }
        struct class *p = head;
        while(p->next != NULL){
                p=p->next;
        }
        p->next = new;
        return head;
}


struct student *addStu(struct student *head,struct student *new)
{

        if(head == NULL){
                head = new;
                return head;
        }
        struct student *p = head;
        while(p->next != NULL){
                p=p->next;
        }
        p->next = new;
        return head;
}


struct student *initStu(struct student *head)
{
        struct student *new = NULL;

        int i;

        for(i=1;i<5;i++){
                new = (struct student *)malloc(sizeof(struct student));
                new->next = NULL;
                printf("NO.%d student name:",i);
                memset(new,'',sizeof(struct student));
                scanf("%s",new->name);
                printf("chian score:");
                scanf("%d",&(new->china));
                printf("math score:");
                scanf("%d",&(new->math));
                printf("english score:");
                scanf("%d",&(new->english));
                new->sum = new->math + new->china + new->english;
                new->average = (float)new->sum / 3;
                head = addStu(head,new);
        }
        return head;
}

struct class *initClass(struct class *phead)
{
        int i;
        struct class *pnew = NULL;
        struct student *head = NULL;
        for(i=1;i<5;i++){
                pnew = (struct class *)malloc(sizeof(struct class));
                pnew->num = i;
                printf("Class.%d msgn",pnew->num);
                pnew->next = NULL;
                pnew->msg = initStu(NULL);
                phead = addClass(phead,pnew);
        }
        return phead;
}

void printInfo(struct class *head)
{
        struct class *p = head;
        struct student *p1 = NULL;
        while(p!=NULL){
                printf("=============Class.%d msg...===========n",p->num);
                p1 = p->msg;
                while(p1!=NULL){
                        printf("Stu_name:%s chian:%d math:%d english:%d sum:%d average:%fn",p1->name,p1->china,p1->math,p1->english,p1->sum,p1->average);
                        p1=p1->next;
                }
                p=p->next;
        }

}


void max_stu(struct class *head)
{
        struct class *p = head;
        struct student *p1 = NULL;
        struct student *max = NULL;
        while(p!=NULL){
                p1 = p->msg;
                max = p1;
                while(p1!=NULL){
                        if((max->sum) < (p1->sum)){
                                max = p1;
                        }
                        p1=p1->next;
                }
                p=p->next;
        }
        printf("全段最低分是%s,语文:%d, 数学:%d 英语:%d 总分:%dn",max->name,max->china,max->math,max->english,max->sum);
}

void min_stu(struct class *head)
{
        struct class *p = head;
        struct student *p1 = NULL;
        struct student *min = NULL;
        while(p!=NULL){
                p1 = p->msg;
                min = p1;
                while(p1!=NULL){
                        if((min->sum) > (p1->sum)){
                                min = p1;
                        }
                        p1=p1->next;
                }
                p=p->next;
        }
        printf("全段最高分是%s,语文:%d, 数学:%d 英语:%d 总分:%dn",min->name,min->china,min->math,min->english,min->sum);
}
int main()
{
        struct class *phead = NULL;
        phead = initClass(phead);
        printInfo(phead);
        printf("n");

        max_stu(phead);
        printf("n");
        min_stu(phead);
        return 0;
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/346874.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号