AsphyxiaChoke 2021-12-20 15:57 采纳率: 66.7%
浏览 1168
已结题

有5个学生,每个学生的数据包括学号、姓名、三门课的成绩,从键盘输入5个学生数据,用动态链表的方式实现学生链表的创建、打印输出及相关操作

img


有5个学生,每个学生的数据包括学号、姓名、三门课的成绩,从键盘输入5个学生数据,用动态链表的方式实现学生链表的创建、打印输出及相关操作。
要求:
(1)5个学生数据的输入与链表创建。设计input函数动态创建学生数据链表,input函数的形参为学生链表的头指针,返回类型为void。
(2)5个学生数据的输出。设计print函数输出所创建的5个学生的数据,print函数的形参为学生链表的头指针,返回类型为void。
(3)在此基础上编写max函数,输出平均成绩最高分的学生的数据,函数的形参为学生链表的头指针,返回类型为void。
(4)(加做)编写插入函数insert,插入一名新学生数据,函数的形参为学生链表的头指针,返回类型为void。并执行print函数验证插入结果。
(5)(加做)编写删除函数delete,输入学号,如果链表中存在则从链表中删除该学生数据,函数的形参为学生链表的头指针,返回类型为void。并执行print函数验证插入结果。
(6)贴实验代码和运行过程截图。

  • 写回答

3条回答 默认 最新

  • 五一编程 2021-12-21 23:32
    关注
    
    #include<stdio.h>
    #include<stdlib.h>
    
    struct node{
        char number;
        char name;
        int grade1;
        int grade2;
        int grade3;
        
        struct node *next;
    };
    
    struct node *first=NULL;
    
    void insert(){
        struct node *new_node;
        
        new_node=(struct node *)malloc(sizeof(struct node));
        
        printf("请输入学生信息及成绩(格式:x x x x x):");
        scanf("%s %s %d %d %d",&new_node->number,&new_node->name,&new_node->grade1,&new_node->grade2,&new_node->grade3);
    
        
        new_node->next=first;
         first=new_node;
        
    }
    
    
    void print(int n){
        struct node *p;
        
        int max;
        int k;
        char number;
        int grade=0;
        int grade1=0;
        int grade2=0;
        int grade3=0;
    
        int i;
        
        for(p=first,i=1;p!=NULL;p=p->next,i++){
            grade=p->grade1 + p->grade2 + p->grade3;
            printf("学号:%c 姓名:%c 平均成绩:%d \n",p->number,p->name,(grade/3));
            grade1=grade1+p->grade1;
            grade2=grade2+p->grade2;
            grade3=grade3+p->grade3;
            k=grade/3;
            if(max<k){
                max=k;
                number=p->number;
            }
        }
        printf("平均分最高的学生的学号为%c 平均成绩为%d \n",number,max);
        
        printf("课程1的平均成绩:%d \n",(grade1/n));
        printf("课程2的平均成绩:%d \n",(grade2/n));
        printf("课程3的平均成绩:%d \n",(grade3/n));
    }
    
    
    int main(){
        
        
        int i,n;
        printf("请输入要插入学生的人数");
        scanf("%d",&n);
        for(i=0;i<n;i++){
            printf("请输入学生%d的信息\n",i+1);
            insert();
        }
        
        print(n);
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 5月28日
  • 已采纳回答 5月20日
  • 请采纳用户回复 12月21日
  • 创建了问题 12月20日

悬赏问题

  • ¥15 preLaunchTask"C/C++: aarch64- apple-darwin22-g++-14 生成活动 文件”已终止,退出代码为-1。
  • ¥18 关于#贝叶斯概率#的问题:这篇文章中利用em算法求出了对数似然值作为概率表参数,然后进行概率表计算,这个概率表是怎样计算的呀
  • ¥20 C#上传XML格式数据
  • ¥15 elementui上传结合oss接口断点续传,现在只差停止上传和继续上传,各大精英看下
  • ¥100 单片机hardfaulr
  • ¥20 手机截图相片分辨率降低一半
  • ¥50 求一段sql语句,遇到小难题了,可以50米解决
  • ¥15 速求,对多种商品的购买力优化问题(用遗传算法、枚举法、粒子群算法、模拟退火算法等方法求解)
  • ¥100 速求!商品购买力最优化问题(用遗传算法求解,给出python代码)
  • ¥15 虚拟机检测,可以是封装好的DLL,可付费