建立单链表(有头尾指针)用于存放学生某门课程成绩(整型);输出链表中的所有数据和平均成绩,并且能够在指定的位置插入或删除指定的某学生的成绩。要求:数据个数和数据从键盘输入。

#include <stdio.h>
#include <stdlib.h>int Listlength=0;//链表长度,不包含头结点
//int *Q=&Listlength;typedef struct _node
{char Name[15];int data;struct _node *next;
}Node;typedef struct _last//头尾指针
{Node *head;Node *tail;
}point;int apply(point *list)//建立头结点
{Node *p = (Node*) malloc (sizeof(Node));list->head = list->tail = p;list->tail->next=NULL;
}void Insert(point *list,int *PLlength)//插入结点
{int position;//位置Node *L,*pre;//pre是L的前驱,L用于定位int score,i;Node *p=(Node*) malloc (sizeof(Node));printf("请输入插入位置\n");while(1)//防止定位溢出{scanf("%d",&position);if(position>0&&position<=*PLlength+1)break;else {printf("ERROR!!\t请重新输入位置!\n");continue;}}getchar();for(L=list->head,i=1;i<=position;i++,L=L->next)//输入定位pre=L;printf("请输入学生姓名\n");for(i=0;i<15;i++)//姓名{scanf("%c",&p->Name[i]);if(p->Name[i]=='\n') break;}printf("请输入学生成绩\n");scanf("%d",&score);//成绩p->data=score;getchar();pre->next=p;p->next=L;if(L==NULL) list->tail=p;(*PLlength)++;//表长加一printf("\n\n");
}int Delete(point *list,int *PLlength)
{int position,i;Node *p,*pre,*del;//del指向被删除节点,pre为del前驱if(*PLlength==0)//成绩表为空{printf("当前成绩表为空\n\n");return 0;}printf("请输入删除位置\n");while(1)//防止定位溢出{scanf("%d",&position);if(position>0&&position<=*PLlength)break;else {printf("ERROR!!\t请重新输入位置!\n");continue;}}for(p=list->head,i=1;i<=position+1;i++,p=p->next)//删除成绩信息{if(i==position) pre=p;if(i==position+1){del=p;p=p->next;pre->next=p;free(del);     (*PLlength)--;//表长减一}}printf("\n\n");return 0;
}int print(point *list,int *PLlength)//输出数据
{int i,num=1,a=1,sum=0;float average;Node *p;if(*PLlength==0)//成绩表为空{printf("当前成绩表为空\n\n");return 0;}printf("序号    姓名         成绩\n");for( p = list->head->next; p; p = p->next){printf("%d\t",num++);for(i=0;i<15;i++){if(p->Name[i]=='\n') break;printf("%c", p->Name[i]);}printf("\t");printf("%8d\n", p->data);sum+=p->data;}printf("\n");average=sum*1.0/--num;//平均值printf("班级平均成绩为%.1f\n",average);return 0;
}int main()
{int op;point list;apply(&list); while(1){printf("*********************************************************\n");printf("请输入操作序号()\n\n");printf("(1)插入学生成绩信息\n");printf("(2)删除学生成绩信息\n");printf("(3)打印成绩表\n");printf("(0)退出程序\n");printf("*********************************************************\n\n\n");scanf("%d",&op);switch(op){case 1:Insert(&list,&Listlength); break;case 2:Delete(&list,&Listlength); break;case 3:print(&list,&Listlength); break;case 0:return 0;}}return 0;
}

单链表创建学生成绩表 输出学生姓名成绩及班级平均分相关推荐

  1. 使用单链表数据结构存储结构化的学生信息

    使用单链表数据结构存储结构化的学生信息 一.题目描述 定义一个学生结构体,包含有:学号,姓名,成绩.输入N个学生的信息,并进行基本的链表操作.(更好的阅读体验,请在我的博客网站上阅读此文:使用单链表数 ...

  2. 输入学生成绩,输出学生成绩等级,学习成绩>=90且<=100分的同学用A表示,60-89分之间的用B表示,<60且>0分以下的用C表示。其余输入都有误!“

    java输入学生成绩,输出学生成绩等级,学习成绩>=90且<=100分的同学用A表示,60-89分之间的用B表示,<60且>0分以下的用C表示.其余输入都有误!"(最 ...

  3. 用计算机求函数总分 平均分,老师如何在Excel学生成绩表中一键生成总分和各科平均分...

    原标题:老师如何在Excel学生成绩表中一键生成总分和各科平均分 每次学生考完试,阅卷打分就已经很累了,还要把学生成绩录入到Excel电子表格中 老师们都知道Excel电子表格具有强大的函数计算功能, ...

  4. MySql 学生表 科目表 成绩表 查询学生各科成绩

    MySql 学生表 科目表 成绩表 查询学生各科成绩 2016年08月16日 01:05:02 lzxomg 阅读数 8155 版权声明:本文注明出处可以转载. https://blog.csdn.n ...

  5. c语言编译学生成绩统计,c语言:编写程序,输入是个学生的学号、姓名成绩,输出学生成绩等级和不及格人数。...

    c语言:编写程序,输入是个学生的学号.姓名成绩,输出学生成绩等级和不及格人数.0 定义调用set_grade()设置等级A85 100 C60 69 B70 84 D 0 59 #include #i ...

  6. 用c语言实现单链表的初始化,建表,查找,求长度,插入,删除等操作,【YTU+2430+C语言习题+链表建立+插入+删除+输(5)...

    的打印.判断链表是否为空.计算链表长度.插入节点.删除节点.删除整个链表.(2) 线性表adt顺序存储实现中的创建.查找.插入和删除等基本操作及相关算法,线性表adt链式存储实现中单链表.循环链表和双 ...

  7. python输入学号姓名输出自我介绍_请编写一个程序,使用字典存储学生信息,学生信息包括学号和姓名,请根据学生学号从小到大输出学生信息。_学小易找答案...

    [单选题]维持人体直立姿势的重要肌 [选择题]2. 对尿失禁患者的护理中错误的一项是( ) [简答题]你印象最深的一处旅游景点是哪里?给你印象深刻的地方在于?有我们的民俗文化元素吗? [判断题]中间继 ...

  8. 请编写一个程序,使用字典存储学生信息,学生信息包含学号和姓名,请根据学生学号从小到大输出学生信息

    请编写一个程序,使用字典存储学生信息,学生信息包含学号和姓名,请根据学生学号从小到大输出学生信息 目录 列表输出 这一题就可以借助于字典的推导式 通过字典输出的另一种方法 第一种方法 列表输出 dic ...

  9. C语言学习之分别用if和switch编程,输入0-100分成绩,输出相应的成绩档次。

    3.分别用if和switch编程,输入0-100分成绩,输出相应的成绩档次. 设: 90分以上为'A'; 80-89 分为'B'; 70~79 分为'C'; 60-69 分为'D';60分以下为E'. ...

最新文章

  1. java面向对象(二)之继承
  2. 推荐 | 作为IDEA的死忠粉,这样设置,效果棒棒哒!
  3. MAX187_量程0-2.5伏电压表_软件滤波
  4. 在android中使用opencv,在安卓上使用OpenCV的指南 - kdnuggets
  5. 动脑2017android_2017年最佳Android库
  6. https 单向认证和双向认证配置
  7. ELK详解(十四)——Logstash TCP/UDP日志收集
  8. 调试LLVM如何生成SSA
  9. 算法简介:不撞南墙不回头----深度优先搜索算法(DFS)
  10. Xilinx IOB输出寄存器约束笔记
  11. 智安网络丨居安思危·洞见未来 — — 智安网络安全周报
  12. 电脑烤机了会有损伤吗,AIDA64一般烤多久
  13. 高斯消元法解线性方程组数学原理及Python手工实现
  14. 作业 20180925-6 四则运算试题生成
  15. 常用的端口号有哪些?
  16. 交流电源和直流电源有什么区别?
  17. 2022-01-10:路径交叉。给你一个整数数组 distance 。 从 X-Y 平面上的点 (0,0) 开始,先向北移动 distance[0] 米,然后向西移动 distance[1] 米,向南
  18. MyBatis-Plus之select、delete
  19. 联发科AIoT平台处理器芯片i500介绍
  20. c语言入门经典第五版自学,C语言入门经典(第5版) PDF扫描[103MB]

热门文章

  1. 使用百度云GPU主机做深度学习
  2. 可以搜索相似网站的网站
  3. Matlab绘制特殊图形------直方图
  4. JPA-Hibernate快速入门图文教程
  5. Microbalze Vitis bug:cannot suspend TCF error report Stalled on memory access
  6. 学习游戏服务器开发必看,C++游戏服务器开发常用工具介绍
  7. folly库安装(1)cmake和gcc的安装、升级
  8. 【树莓派】系统刷机教程
  9. 今日宜募捐?刘强东、李彦宏清北壕捐大PK
  10. 载波聚合mac_Lte-a终端测试仪表在载波聚合下mac层数据调度方法