C语言链表嵌套链表学生成绩管理系统

2023-11-16

  • 一阶段考核标准:用C语言链表嵌套链表学生成绩管理系统

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

#include <stdio.h>
#include <stdlib.h>

struct Student
{
	char name[128];
	int chinese;
	int math;
	int english;
	int sum;
	float average;
	struct Student *next;
};

struct Class
{
	struct Student *stu;
	struct Class *next;
};

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

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

struct Student* creatStudentNode(struct Student *head)
{
	int i;
	struct Student *new = NULL;
	
	for(i=1; i<3; i++){
		new = (struct Student *)malloc(sizeof(struct Student));
		
		printf("请输入第%d个学生的名字和语文、数学、英语、成绩:\n",i);
		scanf("%s%d%d%d",new->name,&(new->chinese),&(new->math),&(new->english));
		new->sum = (new->chinese) + (new->math) + (new->english);
		new->average = (float)(new->sum)/3;
		new->next = NULL;
		head = insertFromStudentNode(head,new);
	}
	return head;
}

struct Class* creatClassNode(struct Class *head)
{
	int i;	
	struct Class *new = NULL;
	
	for(i=1; i<3; i++){
		struct Student *p = NULL;
		new = (struct Class *)malloc(sizeof(struct Class));
		
		printf("请输入第%d个班级的学生信息:\n",i);
		p = creatStudentNode(p);
		new->stu = p;
		new->next = NULL;
		head = insertFromClassNode(head,new);
	}
	return head;
}

void printStudentNode(struct Class *head)
{
	int i;
	int j;
	struct Student *p1 = NULL;
	struct Class *p2 = head;
	
	for(i=1; i<3; i++){
		p1 = p2->stu;
		printf("第%d个班级的学生成绩如下:\n",i);
		printf("--------------------------------------------------------------\n");
		printf("成绩统计\t姓名\t语文\t数学\t英语\t总分\t平均分\n");
		printf("--------------------------------------------------------------\n");
		for(j=1; j<3; j++){
			printf("第%d个学生的成绩:",j);
			printf("%s\t%d\t%d\t%d\t%d\t%.2f\n",p1->name,p1->chinese,p1->math,p1->english,p1->sum,p1->average);
			p1 = p1->next;
		}
		p2 = p2->next;
		putchar('\n');
	}
}

void getStuSumMaxMin(struct Class *head, int *psumMax, int *psumMin)
{
	int i;
	int j;
	struct Student *p1 = NULL;
	struct Class *p2 = head;
	
	*psumMax = head->stu->sum;
	*psumMin = head->stu->sum;
	for(i=1; i<3; i++){
		p1 = p2->stu;
		for(j=1; j<3; j++){
			if(*psumMax < p1->sum){
				*psumMax = p1->sum;
			}
			if(*psumMin > p1->sum){
				*psumMin = p1->sum;
			}
			p1 = p1->next;
		}
		p2 = p2->next;
	}
}

void getClassAverage(struct Class *head, float *pclassAve)
{
	int i;
	int j;
	float total = 0.0;
	struct Student *p1 = NULL;
	struct Class *p2 = head;
	
	for(i=1; i<3; i++){
		p1 = p2->stu;
		for(j=1; j<3; j++){
			total = total + (p1->sum);
			p1 = p1->next;
		}
		p2 = p2->next;
	}
	*pclassAve = total/4;
}

int main()
{
	struct Class *head = NULL;
	int sumMax = 0;
	int sumMin = 0;
	float classAverage = 0.0;
	
	head = creatClassNode(head);
	printStudentNode(head);
	
	getStuSumMaxMin(head,&sumMax,&sumMin);
	getClassAverage(head,&classAverage);
	
	printf("所有班级的学生中最高分是:%d\n",sumMax);
	printf("所有班级的学生中最低分是:%d\n",sumMin);
	printf("所有班级的学生中平均分是:%.2f\n",classAverage);
	return 0;
}
/*
E:\02_老陈VIP\03_code\01_一阶段C语言\一阶段C语言考核题>gcc demo_class_student.c

E:\02_老陈VIP\03_code\01_一阶段C语言\一阶段C语言考核题>a.exe
请输入第1个班级的学生信息:
请输入第1个学生的名字和语文、数学、英语、成绩:
aa
11
22
33
请输入第2个学生的名字和语文、数学、英语、成绩:
bb
44
55
66
请输入第2个班级的学生信息:
请输入第1个学生的名字和语文、数学、英语、成绩:
cc
77
88
99
请输入第2个学生的名字和语文、数学、英语、成绩:
dd
14
25
36
第1个班级的学生成绩如下:
--------------------------------------------------------------
成绩统计        姓名    语文    数学    英语    总分    平均分
--------------------------------------------------------------
第1个学生的成绩:aa     11      22      33      66      22.00
第2个学生的成绩:bb     44      55      66      165     55.00

第2个班级的学生成绩如下:
--------------------------------------------------------------
成绩统计        姓名    语文    数学    英语    总分    平均分
--------------------------------------------------------------
第1个学生的成绩:cc     77      88      99      264     88.00
第2个学生的成绩:dd     14      25      36      75      25.00

所有班级的学生中最高分是:264
所有班级的学生中最低分是:66
所有班级的学生中平均分是:142.50
*/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C语言链表嵌套链表学生成绩管理系统 的相关文章

  • 如何从二维数组中仅打印单个列?

    我正在编写这个程序 我必须只打印二维数组的一列 而不是两者 for int i 0 i lt sjf length i for int j 0 j lt sjf i length j System out printf 5d 4s sjf
  • 使用 REST API 实现属性/字段级安全

    我正在为支持多租户授权模型的 REST API 构建概念验证 该模型不仅控制用户可以访问哪些对象 还控制对象中的字段 此模型的目标是确保租户管理员只能修改其租户并且只能查看允许的对象属性 我有一个正在开发的现有代码库 可在以下位置公开获取
  • 文件写入器覆盖文件而不是附加到末尾时出现问题

    好的 我在将多行写入文本文件时遇到一些问题 程序运行 但不会每次都使用新行 当我希望它运行 4 次时 文本文件应如下所示 a b c d 相反 它看起来像 d 谁知道如何解决这个问题 所有导入均正确导入 来源 已稍加编辑 假设一切都已正确定
  • SpringMVC 和 Hibernate:CannotCreateTransactionException:无法打开 Hibernate 会话进行事务;

    我正在尝试设置并Spring MVC 休眠项目 但它让我发疯 我还会考虑订购 xml 配置文件的建议 我有以下文件 web xml
  • 如何为带有未确定的“?”的Java通用Map添加值值类型?

    我在 JDK 8 示例中看到过这种声明 Map
  • 涉及数学的方法给出与计算器不同的答案

    我是java新手 所以请耐心等待 我试图从比赛总数中获得胜利的百分比 但我正在做的事情还很遥远 我获取百分比的方法如下 public double winPercentage int wins int total return wins t
  • Java 区域设置区分大小写

    我有以下代码来显示当前区域设置 System out println Locale getDefault System out println new Locale en US 上面给出的输出如下 en US en us 如何构造一个 Lo
  • 正则表达式查找两个字符之间的内部匹配

    环境 Java 我想匹配两个字符串之间的字符 这是一个例子 foo
  • Gradle中的build-by-convention深度解释是什么?

    The 摇篮用户指南 http www gradle org docs current userguide userguide html经常提到 Gradle 是陈述性的和用途按惯例构建 这是什么意思 据我了解 这意味着 例如 在java插
  • Jersey 客户端异步 POST 请求不等待响应

    我创建了一个简单的 Jersey 客户端 它能够成功地使用有效负载执行 POST 请求 但现在它正在等待来自 http 端点的响应 public void callEndpoint String endpoint String payloa
  • 如何设置Java线程的CPU核心亲和力?

    我搜索了以前关于类似主题的帖子 但找不到合适的答案 因此提出这个问题 非常感谢您帮助回答 我知道在 Linux 中通过任务集命令设置进程与特定 CPU 核心的关联性 但我想设置 Java 线程与特定 cpu 核心的亲和力 以便属于同一进程的
  • 从两个数组中查找公共文件

    我正在尝试从两个数组中查找通用名称文件 我已将两个不同文件夹的文件名保存在两个不同的数组中 现在我正在创建一个通用文件数组 其中包含具有通用名称的文件 filenames 1 包含文件夹 1 中文件名称的数组 filename2 包含文件夹
  • 无法安装 JDK 9,因为“另一个 Java 安装正在进行中”

    我已经在 Windows 10 x64 上使用 JDK 9 一段时间了 但是当我去安装最新的早期版本 b174 时 我首先卸载了以前的版本 像往常一样 然后运行新的安装程序 它失败并显示一个消息框 显示 另一个 Java 安装正在进行中 您
  • 调用本机方法时返回 java.lang.UnsatisfiedLinkError

    我正在尝试为第三方 DLL 制作 Java 包装器 我创建了自己的 DLL 充当 JNI 和第三方 DLL 之间的中间人 在java中我加载这个DLL很好但是错误java lang UnsatisfiedLinkError sixense
  • 使用 testcontainer 作为 Dockerfile 的一部分运行测试

    我的 dockerfile 看起来像这样 FROM maven 3 jdk 11 slim COPY pom xml COPY src src RUN mvn clean install 这意味着构建的一部分是单元测试的执行 一些单元测试使
  • 错误:找不到符号 ArrayList

    我正在尝试创建某种列表来存储数组 表 中的值 我在这里使用数组列表 但我应该使用列表吗 但是 每次我尝试编译时 它都会引发以下错误 找不到标志 符号 ArrayList类 位置 玩家类 TablePlayer 代码如下 public cla
  • 我可以使用本机系统窗口作为父窗口使 JDialog 成为模式吗?

    我有一个 JDialog 窗口 我需要使其成为模态窗口 但父窗口不是 Java 窗口 而是本机 Windows 操作系统窗口 是否可以 不 你不能 您甚至无法不仅引用本机窗口 甚至无法引用运行在其他 JVM 中的 java 应用程序创建的窗
  • Jersey:返回字符串列表

    我尝试以 JSON 和 XML 形式返回 Jersey 中的字符串列表 我以为这会是微不足道的 我的第一次尝试是写这样的东西 GET Produces MediaType APPLICATION JSON MediaType APPLICA
  • 寻找基于循环固定大小数组的双端队列

    我正在寻找一个Deque其具有以下特点 它有固定的大小 如果我在头 尾添加元素 则另一端的元素会丢失 它是基于数组的 所以我可以在恒定时间内访问随机元素 我可以在前面或末尾添加元素 双端队列 我检查了Deque的实施JCF但我没有找到任何合
  • 无法以联觉方式绘制像素、Pi 数

    我想将 pi 数字的每个数字打印为彩色像素 因此 我得到一个带有 pi 数字的输入 然后将其解析为一个列表 每个节点包含一个数字 我知道 稍后我将使用一个数组 但我从来没有把它画到屏幕上 有人能帮我看看我错在哪里吗 import java

随机推荐

  • Excel开发(VBA)— 快速定位最后有记录的行

    有时候 在进行Excel开发时 需要知道某列的最后一行的行号 Excel也提供了相关功能 Range End属性 Dim strCell As String Dim nLastUseRow As Long Dim nLastRcdRow A
  • Vue深入响应性原理

    深入响应性原理 参考资料 响应性 深入响应性原理 什么是响应性 Vue如何知道哪些代码在执行 Vue如何跟踪变化 被代理的对象 Proxy vs 原始标识 如何让渲染响应变化 响应性基础 声明响应式状态 创建独立的响应式值作为refs Re
  • 数据挖掘之关联分析(实验展示以及源代码)

    数据挖掘之关联分析 算法实现 Apriori算法和FP growth 算法 源代码 简单描述下 关联分析概念 关联分析概念主要参考下面的博文 原文 https blog csdn net qq 40587575 article detail
  • idea如何设置自动换行(亲测)

    方法 步骤 第一步 点击idea中的file 然后点击setting 第二步 在编辑中选择代码风格 然后点击java 第三步 在如图所示的栏目中点击Ensure 开头的选项 第四步 选择好以后直接点击apply应用 使其生效 第五步 返回代
  • Python界面 可视化开发(python3+PyQt5+Qt Designer)

    前言 以前制作一个Python窗体界面 我都是用GUI窗口视窗设计的模块Tkinter一点一点敲出来的 今天朋友问我有没有Python窗体的设计工具 用鼠标拖拖 就能完成窗体设计 我查了查相关资料 果然有一款好用的工具 Qt Designe
  • Q3.Numpy_统计分析-排序、去重和重复、搜索和计数函数

    Part 1 排序函数 numpy排序方式主要分为直接排序和间接排序两种 直接排序是指对数值直接进行排序 间接排序是指根据一个或多个键对数据集进行排序 在numpy中 直接排序常用sort 函数 间接排序常用argsort 函数和lexso
  • 官方YOLOV5的torch模型->ONNX模型->RKNN模型

    1 环境配置 1 1 RKNN Toolkit2的环境配置 下载RKNN Toolkit2 git clone https github com rockchip linux rknn toolkit2 git 打开一个终端命令行窗口 安装
  • C++primer(第五版)---14章(重载运算与类型转换)

    目录 编辑 重载运算符的基本概念 调用重载运算符 而有些运算符不应该被重载 应该保持与内置类型一致的含义 是否成员成员函数 重载io lt lt 和 gt gt 运算符 重载 lt lt 运算符 重载 gt gt 运算符 算术运算符 关系运
  • python英文(无空格)文本分词模块wordninja使用

    在NLP中 数据清洗与分词往往是很多工作开始的第一步 大多数工作中只有中文语料数据需要进行分词 现有的分词工具也已经有了很多了 这里就不再多介绍了 英文语料由于其本身存在空格符所以无需跟中文语料同样处理 如果英文数据中没有了空格 那么应该怎
  • react在移动端的自适应布局

    1 移动端基本可以无阻碍的进行flex的弹性布局 这边对flex就不进行深究 2 可以进行依据窗口进行vw vh vmin vmax单位的布局 1 vw vh vmin vmax 是一种视窗单位 也是相对单位 它相对的不是父节点或者页面的根
  • Android USB Camera(1) : 调试记录

    1 前言 前段时间调试了一个uvc摄像头 这里做下记录 硬件平台为mt6735 软件平台为android 5 0 2 底层配置 UVC全称是usb video class 一种usb视频规范 所有遵循uvc协议的摄像头都不需要安装额外的驱动
  • integer conversion resulted in a change of sign

    Type 69 D integer conversion resulted in a change of sign MDK 出现 68 D integer conversion resulted in a change of sign 在K
  • 三行代码实时追踪你的手,只要有浏览器就够了

    栗子 发自 凹非寺 量子位 报道 公众号 QbitAI Are You OK O K 人脸不管做了多么一言难尽的表情 五官也不太会四处乱跑 手就不一样了 手势百媚千娇 镜头看到的画面就百媚千娇 所以 AI怎么识别手呢 一位叫做Victor
  • Java获取月份天数错误

    之前编写获取日期函数如下 获取某年某月有多少天 return 该月的天数 public static int getDaysAboutMonth int year int month Calendar c Calendar getInsta
  • 电力电子转战数字IC——我的IC面试(2022.10.14更新)

    目录 感谢信 HKWS10 14面试 25mins JXC10 13面试 30mins JDSK9 23面试 42mins 快速的自我介绍 介绍一下这个MCDF的项目 你这里写SV搭建的验证环境 和UVM搭建的有什么区别吗 你这里写了覆盖率
  • 正视周期,创业在衰退中砥砺前行

    比衰退更重要的是 早期投资机构正在面临结构性机遇 数科星球原创 作者丨苑晶 编辑丨大兔 周期 犹如一只隐形的手 在2023年影响着芸芸众生 从经济周期 行业周期再到货币周期 这个隐形的手牵动着消费者需求 产业链变迁 政策变动等多种因素 亦牵
  • 12.SpringBoot整合mybatis实现插入操作

    本文基于10 springboot整合mybatis环境 默认环境配置好的 下面进入正题 首先查看以下数据库表有什么内容 然后 在EmpMapper中定义插入方法 并在emp xml中加入insert语句 这里推荐使用navicat复制其中
  • 概率图论:了解概率分布、概率独立性和随机化

    作者 禅与计算机程序设计艺术 概率图模型 Probabilistic Graphical Model PGM 是现代统计学习中的一个重要工具 它通过描述变量间的依赖关系和概率分布来对复杂系统进行建模 概率图模型由两部分组成 一是概率模型 它
  • QPoint与QPointF的区别

    QPointF类使用浮点精度定义平面中的点 QPoint类使用整数精度定义平面中的点
  • C语言链表嵌套链表学生成绩管理系统

    一阶段考核标准 用C语言链表嵌套链表学生成绩管理系统 链表A 每个节点存放一个新的链表B1 B2 B3 B4 B5的头结点 场景 一个年级 相当链表A 该年级5个班 每个班5个人 相当于链表B1 B5 做一个学生成绩管理系统学生成绩有语文