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…...
Java 语言特性(面试系列2)
一、SQL 基础 1. 复杂查询 (1)连接查询(JOIN) 内连接(INNER JOIN):返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以? 在 Golang 的面试中,map 类型的使用是一个常见的考点,其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

《通信之道——从微积分到 5G》读书总结
第1章 绪 论 1.1 这是一本什么样的书 通信技术,说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号(调制) 把信息从信号中抽取出来&am…...

如何将联系人从 iPhone 转移到 Android
从 iPhone 换到 Android 手机时,你可能需要保留重要的数据,例如通讯录。好在,将通讯录从 iPhone 转移到 Android 手机非常简单,你可以从本文中学习 6 种可靠的方法,确保随时保持连接,不错过任何信息。 第 1…...
数据库分批入库
今天在工作中,遇到一个问题,就是分批查询的时候,由于批次过大导致出现了一些问题,一下是问题描述和解决方案: 示例: // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...

Redis数据倾斜问题解决
Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中,部分节点存储的数据量或访问量远高于其他节点,导致这些节点负载过高,影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...
CMake控制VS2022项目文件分组
我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...
Webpack性能优化:构建速度与体积优化策略
一、构建速度优化 1、升级Webpack和Node.js 优化效果:Webpack 4比Webpack 3构建时间降低60%-98%。原因: V8引擎优化(for of替代forEach、Map/Set替代Object)。默认使用更快的md4哈希算法。AST直接从Loa…...
Vite中定义@软链接
在webpack中可以直接通过符号表示src路径,但是vite中默认不可以。 如何实现: vite中提供了resolve.alias:通过别名在指向一个具体的路径 在vite.config.js中 import { join } from pathexport default defineConfig({plugins: [vue()],//…...

针对药品仓库的效期管理问题,如何利用WMS系统“破局”
案例: 某医药分销企业,主要经营各类药品的批发与零售。由于药品的特殊性,效期管理至关重要,但该企业一直面临效期问题的困扰。在未使用WMS系统之前,其药品入库、存储、出库等环节的效期管理主要依赖人工记录与检查。库…...