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…...
【OSG学习笔记】Day 18: 碰撞检测与物理交互
物理引擎(Physics Engine) 物理引擎 是一种通过计算机模拟物理规律(如力学、碰撞、重力、流体动力学等)的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互,广泛应用于 游戏开发、动画制作、虚…...
【JavaEE】-- HTTP
1. HTTP是什么? HTTP(全称为"超文本传输协议")是一种应用非常广泛的应用层协议,HTTP是基于TCP协议的一种应用层协议。 应用层协议:是计算机网络协议栈中最高层的协议,它定义了运行在不同主机上…...
深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法
深入浅出:JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中,随机数的生成看似简单,却隐藏着许多玄机。无论是生成密码、加密密钥,还是创建安全令牌,随机数的质量直接关系到系统的安全性。Jav…...
聊聊 Pulsar:Producer 源码解析
一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台,以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中,Producer(生产者) 是连接客户端应用与消息队列的第一步。生产者…...
屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!
5月28日,中天合创屋面分布式光伏发电项目顺利并网发电,该项目位于内蒙古自治区鄂尔多斯市乌审旗,项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站,总装机容量为9.96MWp。 项目投运后,每年可节约标煤3670…...
(转)什么是DockerCompose?它有什么作用?
一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用,而无需手动一个个创建和运行容器。 Compose文件是一个文本文件,通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...
C++八股 —— 单例模式
文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全(Thread Safety) 线程安全是指在多线程环境下,某个函数、类或代码片段能够被多个线程同时调用时,仍能保证数据的一致性和逻辑的正确性…...
算法笔记2
1.字符串拼接最好用StringBuilder,不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...
Android第十三次面试总结(四大 组件基础)
Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成,用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机: onCreate() 调用时机:Activity 首次创建时调用。…...
让回归模型不再被异常值“带跑偏“,MSE和Cauchy损失函数在噪声数据环境下的实战对比
在机器学习的回归分析中,损失函数的选择对模型性能具有决定性影响。均方误差(MSE)作为经典的损失函数,在处理干净数据时表现优异,但在面对包含异常值的噪声数据时,其对大误差的二次惩罚机制往往导致模型参数…...
