11.14作业

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

#define MAX_STUDENTS 20
#define MAX_NAME_LENGTH 20

int main() {
	printf("\t\t===班级成绩管理系统\n");
	// 1.登录和注册
	char regest_usr[20] = "";
	char regest_pwd[20] = "";
	int menu1 = 0;
	int flag = 0;

	while (1) {
		printf("\t\t===1.注册\n");
		printf("\t\t===2.登录\n");
		printf("请输入选项:");
		scanf("%d", &menu1);

		switch (menu1) {
		case 1: {
					printf("请输入注册的账号:");
					scanf("%19s", regest_usr);
					printf("请输入注册的密码:");
					scanf("%19s", regest_pwd);
					printf("注册成功\n");
				}
				break;

		case 2: {
					char usrName[20] = "";
					char pwd[20] = "";

					printf("请输入登录账号:");
					scanf("%19s", usrName);
					printf("请输入登录密码:");
					scanf("%19s", pwd);

					if (strcmp(usrName, regest_usr) == 0 && strcmp(pwd, regest_pwd) == 0) {
						printf("登录成功\n");
						flag = 1;
					} else {
						printf("登录失败\n");
					}
				}
				break;

		case 0:
				exit(0);
		default:
				printf("您输入的功能有误,请重新输入\n");
		}
		if (flag == 1) {
			break;
		}
	}

	// 菜单
	printf("\t\t菜单\n");
	printf("\t\t1.录入学生姓名和成绩\n");
	printf("\t\t2.展示学生信息\n");
	printf("\t\t3.查看最高分和最低分学生的信息\n");
	printf("\t\t4.输入一个学生的姓名,得到成绩\n");
	printf("\t\t5.将所有学生成绩按照降序进行排序\n");
	printf("\t\t6.输入一个学生的姓名,更改成绩\n");
	printf("\t\t7.添加一个学生成绩到最后\n");
	printf("\t\t8.输入一个学生姓名,将该学生信息删除\n");
	printf("\t\t9.求班学生总成绩和平均分\n");
	printf("\t\t10.给出一个成绩的范围,将成绩在该范围的学生信息输出\n");

	char arr[MAX_STUDENTS][MAX_NAME_LENGTH];
	int brr[MAX_STUDENTS];
	int studentCount = 0;

	while (1) {
		int menu = 0;
		printf("请输入你想要的功能:");
		scanf("%d", &menu);
		switch (menu) {
		case 1: {
					printf("请输入学生的个数:");
					scanf("%d", &studentCount);
					for (int i = 0; i < studentCount; i++) {
						printf("请输入第%d个学生的姓名和成绩:", i + 1);
						scanf("%19s %d", arr[i], &brr[i]);
					}
				}
				break;

		case 2: {
					printf("学生信息如下:\n");
					for (int i = 0; i < studentCount; i++)
					{
						printf("%s\t%d\n", arr[i], brr[i]);
					}
				}
				break;

		case 3: {
					int maxIndex = 0, minIndex = 0;
					int maxScore = brr[0], minScore = brr[0];
					for (int i = 1; i < studentCount; i++)
					{
						if (brr[i] > maxScore)
						{
							maxScore = brr[i];
							maxIndex = i;
						}
						if (brr[i] < minScore)
						{
							minScore = brr[i];
							minIndex = i;
						}
					}
					printf("最高分是%s,成绩%d\n", arr[maxIndex], maxScore);
					printf("最低分是%s,成绩%d\n", arr[minIndex], minScore);
				}
				break;

		case 4: {
					char name[MAX_NAME_LENGTH];
					printf("请输入学生的姓名:");
					scanf("%19s", name);
					for (int i = 0; i < studentCount; i++)
					{
						if (strcmp(arr[i], name) == 0)
						{
							printf("%s的成绩是%d\n", arr[i], brr[i]);
							break;
						}
					}
				}
				break;

		case 5: {
					for (int i = 0; i < studentCount - 1; i++)
					{
						for (int j = 0; j < studentCount - 1 - i; j++)
						{
							if (brr[j] < brr[j + 1])
							{
								int temp = brr[j];
								brr[j] = brr[j + 1];
								brr[j + 1] = temp;
								char tempName[MAX_NAME_LENGTH];
								strcpy(tempName, arr[j]);
								strcpy(arr[j], arr[j + 1]);
								strcpy(arr[j + 1], tempName);
							}
						}
					}
					printf("学生成绩降序排序完成:\n");
					for (int i = 0; i < studentCount; i++)
					{
						printf("%s\t%d\n", arr[i], brr[i]);
					}
				}
				break;

		case 6: {
					char name[MAX_NAME_LENGTH];
					printf("请输入要更改成绩的学生姓名:");
					scanf("%19s", name);
					for (int i = 0; i < studentCount; i++)
					{
						if (strcmp(arr[i], name) == 0) {
							printf("请输入新成绩:");
							scanf("%d", &brr[i]);
							printf("%s的成绩已更新为%d\n", arr[i], brr[i]);
							break;
						}
					}
				}
				break;

		case 7: {
					if (studentCount >= MAX_STUDENTS)
					{
						printf("学生数量已达上限。\n");
					} else {
						printf("请输入新学生的姓名和成绩:");
						scanf("%19s %d", arr[studentCount], &brr[studentCount]);
						studentCount++;
						printf("学生%s已添加。\n", arr[studentCount - 1]);
					}
				}
				break;

		case 8: {
					char name[MAX_NAME_LENGTH];
					printf("请输入要删除的学生姓名:");
					scanf("%19s", name);
					for (int i = 0; i < studentCount; i++)
					{
						if (strcmp(arr[i], name) == 0) {
							for (int j = i; j < studentCount - 1; j++)
							{
								strcpy(arr[j], arr[j + 1]);
								brr[j] = brr[j + 1];
							}
							studentCount--;
							printf("学生%s已删除。\n", name);
							break;
						}
					}
				}
				break;

		case 9: {
					int total = 0;
					for (int i = 0; i < studentCount; i++)
					{
						total += brr[i];
					}
					printf("班级总成绩为%d,平均分为%.2f\n", total, (float)total / studentCount);
				}
				break;

		case 10: {
					 int minScore, maxScore;
					 printf("请输入成绩范围(最小和最大成绩):");
					 scanf("%d %d", &minScore, &maxScore);
					 int count = 0;
					 printf("成绩在%d到%d之间的学生信息:\n", minScore, maxScore);
					 for (int i = 0; i < studentCount; i++) {
						 if (brr[i] >= minScore && brr[i] <= maxScore)
						 {
							 printf("%s\t%d\n", arr[i], brr[i]);
							 count++;
						 }
					 }
					 if (count == 0) {
						 printf("没有学生的成绩在这个范围内。\n");
					 }
				 }
				 break;

		case 0:
				 return 0;
		default:
				 printf("请重新输入\n");
		}
	}

	return 0;
}
		===班级成绩管理系统
		===1.注册
		===2.登录
请输入选项:1
请输入注册的账号:123
请输入注册的密码:123
注册成功
		===1.注册
		===2.登录
请输入选项:2
请输入登录账号:123
请输入登录密码:123
登录成功
		菜单
		1.录入学生姓名和成绩
		2.展示学生信息
		3.查看最高分和最低分学生的信息
		4.输入一个学生的姓名,得到成绩
		5.将所有学生成绩按照降序进行排序
		6.输入一个学生的姓名,更改成绩
		7.添加一个学生成绩到最后
		8.输入一个学生姓名,将该学生信息删除
		9.求班学生总成绩和平均分
		10.给出一个成绩的范围,将成绩在该范围的学生信息输出
请输入你想要的功能:1
请输入学生的个数:3
请输入第1个学生的姓名和成绩:张三 100
请输入第2个学生的姓名和成绩:李四 90
请输入第3个学生的姓名和成绩:王五 80
请输入你想要的功能:2
学生信息如下:
张三	100
李四	90
王五	80
请输入你想要的功能:3
最高分是张三,成绩100
最低分是王五,成绩80
请输入你想要的功能:4
请输入学生的姓名:张三
张三的成绩是100
请输入你想要的功能:5
学生成绩降序排序完成:
张三	100
李四	90
王五	80
请输入你想要的功能:6
请输入要更改成绩的学生姓名:张三
请输入新成绩:90
张三的成绩已更新为90
请输入你想要的功能:7
请输入新学生的姓名和成绩: 小明 60
学生小明已添加。
请输入你想要的功能:8
请输入要删除的学生姓名:张三
学生张三已删除。
请输入你想要的功能:9
班级总成绩为230,平均分为76.67
请输入你想要的功能:10
请输入成绩范围(最小和最大成绩):59 100
成绩在59到100之间的学生信息:
李四	90
王五	80
小明	60
请输入你想要的功能:0
ubuntu@ubuntu:day12$ 

二维数组
├── 4.1 二维数组的引入
│   ├── 定义:由两个下标表示的数组,有行有列
│   ├── 格式:数据类型 数组名[行数][列数]
│   ├── 注意事项
│   │   ├── 行数表示二维数组的行数,列数表示二维数组的列数
│   │   ├── 使用数组元素时,单个下标表示当前行的一维数组起始地址
│   │   ├── 两个下标表示具体的数组元素
│   │   ├── 行标范围[0, M-1],列标范围[0, N-1]
│   │   └── 未初始化的二维数组中的每个变量都是随机值
├── 4.2 二维整型数组的初始化
│   ├── 按行全部初始化:每一行的值放入花括号中
│   ├── 按行部分初始化:未初始化部分用0补齐
│   ├── 按分布方式全部初始化:每行元素不需要使用括弧包裹
│   ├── 按分布方式部分初始化:后面未初始化部分用0补齐
│   └── 特殊初始化:定义时第一维可以省略,由初始化元素个数和列数确定行数
├── 4.3 二维数组的输入输出
│   ├── 输入输出任意元素:arr[i][j]
│   ├── 输出一维数组:使用两层循环
│   └── 示例代码:班级学生成绩输入输出
├── 4.4 二维整型数组的相关操作
│   ├── 整体求和、求最值:累加求和,比较求最值
│   ├── 求每一行的和、最值:先清零再累加,比较更新最值
│   ├── 转置:使用原数组给新数组赋值
│   └── 示例代码:班级学生成绩求和、求最值、转置
├── 4.5 二维字符数组
│   ├── 定义:用于存储多个字符串
│   ├── 格式:char 数组名[行数][列数]
│   ├── 初始化:使用字符填充,使用字符串填充
│   └── 操作:字符串输入输出、排序
└── 练习:完成注册登录功能
    ├── 注册:输入账号和密码进行注册
    ├── 登录:输入账号和密码进行登录
    └── 登录成功:跳转到指定位置继续执行程序

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/915983.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

<Project-23 Navigator Portal> Python flask web 网站导航应用 可编辑界面:添加图片、URL、描述、位置移动

目的&#xff1a; 浏览器的地址簿太厚&#xff0c;如下图&#xff1a; 开始&#xff0c;想给每个 Web 应用加 icon 来提高辨识度&#xff0c;发现很麻烦&#xff1a;create image, resize, 还要挑来挑去&#xff0c;重复性地添加代码。再看着这些密密麻麻的含有重复与有规则的…

【Kafka】集成案例:与Spark大数据组件的协同应用

&#x1f407;明明跟你说过&#xff1a;个人主页 &#x1f3c5;个人专栏&#xff1a;《大数据前沿&#xff1a;技术与应用并进》&#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目录 一、引言 1、什么是kafka 2、Kafka 的主要特性 3、Kafka 的…

Windows上安装专业版IDEA2024并激活

1、IDEA官方下载 搜索IDEA官网点击进入&#xff0c;点击Download&#xff08;目前这个激活脚本只能激活2024.1.7&#xff0c;2024.2.x的版本都不能激活&#xff0c;2024.1.7版本已上传资源&#xff09;&#xff0c;如图&#xff1a; 2、开始安装 1&#xff09;、双击下载的.…

CSS教程(二)- CSS选择器

1. 作用 匹配文档中的某些元素为其应用样式。根据不同需求把不同的标签选出来。 2. 分类 分类 基础选择器 包含 标签选择器、ID选择器、类选择器、通用选择器等 复合选择器 包含 后代选择器、子代选择器、伪类选择器等 1 标签选择器 介绍 又称为元素选择器&#xff0c;根…

Unix进程

文章目录 命令行参数进程终止正常结束异常终止exit和_exitatexit 环境变量环境变量性质环境表shell中操作环境变量查看环境变量设置环境变量 环境变量接口获取环境变量设置环境变量 环境变量的继承性 进程资源shell命令查看进程的资源限制 进程关系进程标识进程组会话控制终端控…

c# onnx 调用yolo v11进行目标检测

先上图&#xff0c;支持图片&#xff0c;视频检测 FormYoloV11.cs using Microsoft.ML.OnnxRuntime; using Microsoft.ML.OnnxRuntime.Tensors; using OpenCvSharp; using OpenCvSharp.Dnn; using System; using System.Collections.Generic; using System.Diagnostics; usin…

【多语言】每种语言打印helloworld,编译为exe会占多大空间

文章目录 背景c语言 53KBc 53KBgo 1.8Mdart 4.6Mpython未测试nodejs未测试rust未测试java未测试cmd || bash || powershell 未测试other 背景 各个版本的helloworld&#xff0c;纯属闲的, 环境如下: - win10 - mingw: gcc8.1.0 - go1.21 - dart3.5.4c语言 53KB gcc main.c -…

前端搭建低代码平台,微前端如何选型?

目录 背景 一、微前端是什么&#xff1f; 二、三大特性 三、现有微前端解决方案 1、iframe 2、Web Components 3、ESM 4、EMP 5、Fronts 6、无界&#xff08;文档&#xff09; 7、qiankun 四、我们选择的方案 引入qiankun并使用&#xff08;src外层作为主应用&#xff09; 主应…

CVE-2024-2961漏洞的简单学习

简单介绍 PHP利用glibc iconv()中的一个缓冲区溢出漏洞&#xff0c;实现将文件读取提升为任意命令执行漏洞 在php读取文件的时候可以使用 php://filter伪协议利用 iconv 函数, 从而可以利用该漏洞进行 RCE 漏洞的利用场景 PHP的所有标准文件读取操作都受到了影响&#xff1…

InternVL 多模态模型部署微调实践

目录 0 什么是MLLM 1 开发机创建与使用 2 LMDeploy部署 2.1 环境配置 2.2 LMDeploy基本用法介绍 2.3 网页应用部署体验 3 XTuner微调实践 3.1 环境配置 3.2.配置文件参数解读 3.3 开始微调 4.体验模型美食鉴赏能力 0 什么是MLLM 多模态大语言模型 ( Multimodal Larg…

干货分享之Python爬虫与代理

嗨伙伴们&#xff0c;今天是干货分享哦&#xff0c;可千万不要错过。今天小蝌蚪教大家使用phthon时学会巧妙借用代理ip来更好地完成任务。 让我们先了解一下为什么说咱们要用爬虫代理ip呢&#xff0c;那是因为很多网站为了防止有人过度爬取数据&#xff0c;对自身资源造成损害…

鸿蒙学习生态应用开发能力全景图-赋能套件(1)

文章目录 赋能套件鸿蒙生态应用开发能力全景图 赋能套件 鸿蒙生态白皮书: 全面阐释了鸿蒙生态下应用开发核心理念、关键能力以及创新体验,旨在帮助开发者快速、准确、全面的了解鸿蒙开发套件给开发者提供的能力全景和未来的愿景。 视频课程: 基于真实的开发场景,提供向导式…

netcat工具安装和使用

netcat是一个功能强大的网络实用工具&#xff0c;可以从命令⾏跨⽹络读取和写⼊数据。 netcat是为Nmap项⽬编写的&#xff0c;是⽬前分散的Netcat版本系列的经典。 它旨在成为可靠的后端⼯具&#xff0c;可⽴即为其他应⽤程序和⽤户提供⽹络连接。 一&#xff0c;下载安装 1&a…

【PHP】ThinkPHP基础

下载composer ComposerA Dependency Manager for PHPhttps://getcomposer.org/ 安装composer 查看composer是否安装 composer composer --version 安装 ThinkPHP6 如果你是第一次安装的话&#xff0c;首次安装咱们需要打开控制台&#xff1a; 进入后再通过命令,在命令行下面&a…

【HarmonyOS】应用实现读取剪切板内容(安全控件和自读取)

【HarmonyOS】应用实现读取粘贴板内容(安全控件和自读取) 前言 三方应用 读取系统剪切板是比较常见的功能。可以实现功能入口的快捷激活跳转&#xff0c;以及用户粘贴操作的简化&#xff0c;增强用户的体验感。 但是在用户日渐注重隐私的今天&#xff0c;系统对于剪切板权限的…

飞牛云fnOS本地部署WordPress个人网站并一键发布公网远程访问

文章目录 前言1. Docker下载源设置2. Docker下载WordPress3. Docker部署Mysql数据库4. WordPress 参数设置5. 飞牛云安装Cpolar工具6. 固定Cpolar公网地址7. 修改WordPress配置文件8. 公网域名访问WordPress 前言 本文旨在详细介绍如何在飞牛云NAS上利用Docker部署WordPress&a…

解析安卓镜像包和提取DTB文件的操作日志

概述 想查看一下安卓的镜像包里都存了什么内容 步骤 使用RKDevTool_v3.15对RK3528_DC_HK1_RBOX_K8_Multi_WIFI_13_20230915.2153.img解包 路径: 高级(Advancing) > 固件(firmware) > 解包(unpacking)得到\Output\Android\Image boot.imguboot.imgsuper.img 处理boot.…

LeetCode 热题100(八)【二叉树】(3)

目录 8.11二叉树展开为链表&#xff08;中等&#xff09; 8.12从前序与中序遍历序列构造二叉树&#xff08;中等&#xff09; 8.13路径总和III&#xff08;中等&#xff09; 8.14二叉树的最近公共祖先&#xff08;中等&#xff09; 8.15二叉树中的最大路径和&#xff08;困…

FPGA实现PCIE3.0视频采集转SDI输出,基于XDMA+GS2971架构,提供工程源码和技术支持

目录 1、前言工程概述免责声明 2、相关方案推荐我已有的PCIE方案本博已有的 SDI 编解码方案本博客方案的PCIE2.0版本 3、PCIE基础知识扫描4、工程详细设计方案工程设计原理框图电脑端视频QT上位机XDMA配置及使用XDMA中断模块FDMA图像缓存Native视频时序生成RGB转BT1120SDI转HDM…

纽约大学:指导LLM提出澄清性问题

&#x1f4d6;标题&#xff1a;Modeling Future Conversation Turns to Teach LLMs to Ask Clarifying Questions &#x1f310;来源&#xff1a;arXiv, 2410.13788 &#x1f31f;摘要 &#x1f538;大型语言模型&#xff08;LLM&#xff09;必须经常对高度模糊的用户请求做出…