C语言作业5(学生管理系统C语言)
成学生管理系统
1> 使用菜单完成
2> 有学生的信息录入功能:输入学生个数,并将学生的姓名、分数录入
3> 查看学生信息:输出所有学生姓名以及对应的分数
4> 求出学习最好的学生信息:求最大值
5> 按姓名将所有学生进行升序排序
6> 按成绩将所有学生进行升序排序
要求每个功能使用函数完成
>>>>>>>>>>>实现的函数类型是有参数,无返回值的函数<<<<<<<<<<<<<<<<<<
#include <stdio.h>
#include <string.h>
#define MAX 100void print_menu()
{printf("\t\t======1.录入学生信息===================\n");printf("\t\t======2.查看学生信息===================\n");printf("\t\t======3.查询学习最好的学生信息===========\n");printf("\t\t======4.按姓名将所有学生进行升序排序======\n");printf("\t\t======0.退出==========================\n");
}
// 1.录入学生信息
void enterStudents(int studentsNumber,char names[MAX][30],int scores[MAX])
{for (int i = 0; i < studentsNumber; i++){printf("请输入第%d个学生的姓名:", i + 1);scanf("%s", names[i]);getchar();printf("请输入第%d个学生的成绩:", i + 1);scanf("%d", &scores[i]);}
}// 2.查看学生信息
void viewStudents(int studentsNumber,char names[MAX][30],int scores[MAX])
{printf("学生信息如下:\n");for (int i = 0; i < studentsNumber; i++){printf("学生姓名:%s 学生成绩:%d\n", names[i], scores[i]);}
}// 3.求出学习最好的学生信息(求最大值)
void bestStudents(int studentsNumber,char names[MAX][30],int scores[MAX])
{int maxi = 0;for (int i = 0; i < studentsNumber; i++){if (scores[maxi] < scores[i]){maxi = i;}}printf("成绩最好的学生姓名:%s 学生成绩:%d\n", names[maxi], scores[maxi]);
}// 4.按姓名将所有学生进行升序排序
void nameStudents(int studentsNumber,char names[MAX][30],int scores[MAX])
{char temp[50] = {'0'};int temps = 0;for (int i = 0; i < studentsNumber - 1; i++){for (int j = 0; j < studentsNumber - i - 1; j++){if (strcmp(names[j], names[j + 1]) > 0){strcpy(temp, names[j]);strcpy(names[j],names[j+1]);strcpy(names[j+1], temp);temps = scores[j];scores[j] = scores[j+1];scores[j+1] = temps;}}}for (int i = 0; i < studentsNumber; i++){printf("排序后学生姓名:%s 学生成绩:%d\n", names[i], scores[i]);}
}int main(int argc, char const *argv[])
{char names[MAX][30] = {'0'};int scores[MAX] = {0};int studentsNumber = 0;while (1){int n = 0;print_menu();printf("请输入序号>>");scanf("%d", &n);getchar();switch (n){case 1:printf("请输入学生个数:");scanf("%d", &studentsNumber);getchar();enterStudents(studentsNumber,names,scores);break;case 2:viewStudents(studentsNumber,names,scores);break;case 3:bestStudents(studentsNumber,names,scores);break;case 4:nameStudents(studentsNumber,names,scores);break;case 0:goto END;default:printf("您输入的功能有误,请重新输入\n");break;}}
END:return 0;
}
以下代码作为纪念,定义了全局变量,没有传参,直接实现函数功能了,总之好像没啥意义
#include <stdio.h>
#include <string.h>
#define MAX 100
char names[MAX][30] = {'0'};
int scores[MAX] = {0};
int studentsNumber = 0;void print_menu()
{printf("\t\t======1.录入学生信息===================\n");printf("\t\t======2.查看学生信息===================\n");printf("\t\t======3.查询学习最好的学生信息===========\n");printf("\t\t======4.按姓名将所有学生进行升序排序======\n");printf("\t\t======0.退出==========================\n");
}
// 1.录入学生信息
void enterStudents(void)
{printf("请输入学生个数:");scanf("%d", &studentsNumber);getchar();for (int i = 0; i < studentsNumber; i++){printf("请输入第%d个学生的姓名:", i + 1);scanf("%s", names[i]);getchar();printf("请输入第%d个学生的成绩:", i + 1);scanf("%d", &scores[i]);}
}// 2.查看学生信息
void viewStudents(void)
{printf("学生信息如下:\n");for (int i = 0; i < studentsNumber; i++){printf("学生姓名:%s 学生成绩:%d\n", names[i], scores[i]);}
}// 3.求出学习最好的学生信息(求最大值)
void bestStudents(void)
{int maxi = 0;for (int i = 0; i < studentsNumber; i++){if (scores[maxi] < scores[i]){maxi = i;}}printf("成绩最好的学生姓名:%s 学生成绩:%d\n", names[maxi], scores[maxi]);
}// 4.按姓名将所有学生进行升序排序
void nameStudents(void)
{char temp[50] = {'0'};int temps = 0;for (int i = 0; i < studentsNumber - 1; i++){for (int j = 0; j < studentsNumber - i - 1; j++){if (strcmp(names[j], names[j + 1]) > 0){strcpy(temp, names[j]);strcpy(names[j],names[j+1]);strcpy(names[j+1], temp);temps = scores[j];scores[j] = scores[j+1];scores[j+1] = temps;}}}for (int i = 0; i < studentsNumber; i++){printf("排序后学生姓名:%s 学生成绩:%d\n", names[i], scores[i]);}
}int main(int argc, char const *argv[])
{while (1){int n = 0;print_menu();printf("请输入序号>>");scanf("%d", &n);getchar();switch (n){case 1:enterStudents();break;case 2:viewStudents();break;case 3:bestStudents();break;case 4:nameStudents();break;case 0:goto END;default:printf("您输入的功能有误,请重新输入\n");break;}}
END:return 0;
}
输出结果如下:

思维导图整理:

相关文章:
C语言作业5(学生管理系统C语言)
成学生管理系统 1> 使用菜单完成 2> 有学生的信息录入功能:输入学生个数,并将学生的姓名、分数录入 3> 查看学生信息:输出所有学生姓名以及对应的分数 4> 求出学习最好的学生信息:求最大值 5> 按姓名将所有学…...
OS Copilot:新手测评体验
文章目录 前言一、OS Copilot(阿里云操作系统智能助手)简介二、测评体验总结OS Copilot 产品体验评测OS Copilot 产品功能反馈 前言 本文简单分享一下自己使用OS Copilot测评体验。 一、OS Copilot(阿里云操作系统智能助手)简介 …...
PS 2024【最新】中文白嫖版!,安装教程,图文步骤
文章目录 软件介绍软件下载安装步骤 软件介绍 Photoshop,简称“PS” Adobe Photoshop,简称“PS”,是由Adobe Systems开发和发行的图像处理软件。Photoshop主要处理以像素所构成的数字图像。使用其众多的编修与绘图工具,可以有效地…...
bind方法的使用
在JavaScript或TypeScript中,this.data.setEventListener(this.onAddEvent.bind(this)); 和 this.data.setEventListener(this.onAddEvent); 之间的主要区别在于this关键字的绑定方式。 不使用.bind(this) 当你直接传递函数引用 this.onAddEvent给 setEventListene…...
MySQL数据库基本操作-DDL和DML
1. DDL解释 DDL(Data Definition Language),数据定义语言,该语言部分包括以下内容: 对数据库的常用操作对表结构的常用操作修改表结构 2. 对数据库的常用操作 功能SQL查看所有的数据库show databases;查看有印象的数据库show d…...
iOS 应用内存超过多少会收到系统内存警告 ?
iOS 应用内存超过多少会收到系统内存警告 ? 在 iOS 应用中,系统内存警告的触发是由 iOS 操作系统动态决定的,并不是一个固定的阈值。系统会根据当前设备的可用内存、正在运行的其他应用程序的内存需求以及当前应用程序的内存占用情况来判断是…...
【分布式系统】Filebeat+Kafka+ELK 的服务部署
目录 一.实验准备 二.配置部署 Filebeat 三.配置Logstash 四.验证 一.实验准备 结合之前的博客中的实验 主机名ip地址主要软件es01192.168.80.101ElasticSearches02192.168.80.102ElasticSearches03192.168.80.103ElasticSearch、Kibananginx01192.168.80.104nginx、Logs…...
Qt Qwt 图表库详解及使用
文章目录 Qt Qwt 图表库详解及使用一、Qwt 概述二、安装 Qwt1. 下载和编译 Qwt2. 在项目中使用 Qwt三、Qwt 的基本使用1. 创建一个简单的折线图2. 添加图例和自定义样式四、Qwt 的交互功能1. 启用缩放和平移2. 启用数据点选择五、Qwt 的高级特性1. 实时数据更新2. 多轴绘图六、…...
基于B站视频评论的文本分析,采用包括文本聚类分析、LDA主题分析、网络语义分析
研究主题 本研究旨在通过对B站视频评论数据进行文本分析,揭示用户评论的主题、情感倾向和语义结构,助力商业决策。主要技术手段包括Python爬虫、LDA主题分析、聚类分析和语义网络分析。首先,利用Python爬虫采集大量评论数据并进行预处理。运…...
【Qt】xml Dom复制
1. 功能 将A.xml文件中的copyNode节点全部复制到B.xml中的testRoot节点。 2. 代码 #include <QDomDocument> #include <QFile> #include <QIODevice> #include <QtXml>void copyNodeXml() {// 源文件DOMQDomDocument ADoc;// 加载源文件QFile fileA(…...
MySQL联合索引最左匹配原则
MySQL中的联合索引(也叫组合索引)遵循最左匹配原则,即在创建联合索引时,查询条件必须从索引的最左边开始,否则索引不会被使用。在联合索引的情况下,数据是按照索引第一列排序,第一列数据相同时才会按照第二列排序。 例…...
2024最新最全面的软件测试自动化面试题(含答案)
1.如何把自动化测试在公司中实施并推广起来的? 选择长期的有稳定模块的项目 项目组调研选择自动化工具并开会演示demo案例,我们主要是演示selenium和robot framework两种。 搭建自动化测试框架,在项目中逐步开展自动化。 把该项目的自动化…...
Linux磁盘-MBRGPT
作者介绍:简历上没有一个精通的运维工程师。希望大家多多关注作者,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。 Linux磁盘涉及到的命令不是很多,但是在实际运维中的作用却很大,因为Linux系统及业务都会承载到硬盘上…...
kind kubernetes(k8s虚拟环境)使用本地docker的镜像
kubernetes中,虽然下载镜像使用docker,但是存储在docker image里的镜像是不能被k8s直接使用的,但是kind不同,可以使用下面的方法,让kind kubernetes环境使用docker image里的镜像。 kind – Quick Start 例如&#x…...
kafka发送消息流程
配置props.put(ProducerConfig.PARTITIONER_CLASS_CONFIG, RoundRobinPartitioner.class); public Map<String,Object> producerConfigs(){Map<String,Object> props new HashMap<>();props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG,bootstrapServers…...
使用Godot4组件制作竖版太空射击游戏_2D卷轴飞机射击-敌人生成器(八)
文章目录 开发思路敌人生成器代码分析属性配置 使用Godot4组件制作竖版太空射击游戏_2D卷轴飞机射击(一) 使用Godot4组件制作竖版太空射击游戏_2D卷轴飞机射击-激光组件(二) 使用Godot4组件制作竖版太空射击游戏_2D卷轴飞机射击-飞…...
Allegro中show elements不弹窗问题
今天allegro用的好好的,刚刚还可以正常使用show elements进行对象的详细信息查看的,突然就不好使了,具体表现为不弹窗。 找了好久找到一个类似问题的,具体的解决方法是: D:\Allegro\Cadence\SPB_Data\pcbenv在allegro的…...
【C++】继承最全解析(什么是继承?继承有什么用?)
目录 一、前言 二、什么是继承 ? 💢继承的概念💢 💢继承的定义💢 🥝定义格式 🍇继承权限 三、基类与派生类对象的赋值转换 四、继承的作用域 五、派生类中的默认成员函数 💢…...
STM32-外部中断浅析
本篇解释了STM32中断原理 MCU为什么需要中断 中断,是嵌入式系统中很重要的一个功能,在系统运行过程中,当出现需要立刻处理的情况时,暂停当前任务,转而处理紧急任务,处理完毕后,恢复之前的任务…...
Spring-Data-Elasticsearch
简介 Spring Data for Elasticsearch 是 Spring Data 项目的一部分,该项目旨在为新数据存储提供熟悉且一致的基于 Spring 的编程模型,同时保留特定于存储的特性和功能。 Spring Data Elasticsearch 项目提供了与 Elasticsearch 搜索引擎的集成。Spring…...
云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?
大家好,欢迎来到《云原生核心技术》系列的第七篇! 在上一篇,我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在,我们就像一个拥有了一块崭新数字土地的农场主,是时…...
内存分配函数malloc kmalloc vmalloc
内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...
RocketMQ延迟消息机制
两种延迟消息 RocketMQ中提供了两种延迟消息机制 指定固定的延迟级别 通过在Message中设定一个MessageDelayLevel参数,对应18个预设的延迟级别指定时间点的延迟级别 通过在Message中设定一个DeliverTimeMS指定一个Long类型表示的具体时间点。到了时间点后…...
椭圆曲线密码学(ECC)
一、ECC算法概述 椭圆曲线密码学(Elliptic Curve Cryptography)是基于椭圆曲线数学理论的公钥密码系统,由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA,ECC在相同安全强度下密钥更短(256位ECC ≈ 3072位RSA…...
Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例
使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件,常用于在两个集合之间进行数据转移,如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model:绑定右侧列表的值&…...
【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器
——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的一体化测试平台,覆盖应用全生命周期测试需求,主要提供五大核心能力: 测试类型检测目标关键指标功能体验基…...
Go 语言接口详解
Go 语言接口详解 核心概念 接口定义 在 Go 语言中,接口是一种抽象类型,它定义了一组方法的集合: // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的: // 矩形结构体…...
论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)
笔记整理:刘治强,浙江大学硕士生,研究方向为知识图谱表示学习,大语言模型 论文链接:http://arxiv.org/abs/2407.16127 发表会议:ISWC 2024 1. 动机 传统的知识图谱补全(KGC)模型通过…...
【C语言练习】080. 使用C语言实现简单的数据库操作
080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...
有限自动机到正规文法转换器v1.0
1 项目简介 这是一个功能强大的有限自动机(Finite Automaton, FA)到正规文法(Regular Grammar)转换器,它配备了一个直观且完整的图形用户界面,使用户能够轻松地进行操作和观察。该程序基于编译原理中的经典…...
