2024.7.16作业

使用结构体完成学生(学号、姓名、性别、成绩)管理系统

1> 使用菜单实现

2> 功能1:完成对学生信息的录入,确定人数,完成输入

2> 功能2:完成对学生信息的输出

3> 功能3:输出成绩最高和最低学生的信息

4> 功能4:输出学生的总成绩和平均成绩

5> 功能5:对学生信息按成绩进行排序,根据传入的升降序,确定排序功能、

6> 功能6:提示并输入要查找的学生名字,查找该名字是否存在于该班级

7> 功能0:退出

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAX 10    //数组最大长度

struct Stu     //存放学生信息的结构体
{
	char id[30];      //学号
	char name[20];    //姓名
	char gender[3];   //性别
	double score;     //成绩
};

void shuru(struct Stu *p,int *q)   //学生信息录入函数
{
	int n=0;    
	printf("要录入学生信息的个数>>");
	scanf("%d",&n);
	for(int i=*q;i<*q+n;i++)
	{
		printf("请输入第%d个学生的学号:",i+1);
		scanf("%s",p[i].id);
		printf("请输入第%d个学生的姓名:",i+1);
		scanf("%s",p[i].name);
		printf("请输入第%d个学生的性别:",i+1);
		scanf("%s",p[i].gender);
		printf("请输入第%d个学生的成绩:",i+1);
		scanf("%lf",&p[i].score);
		printf("\n");
	}
	*q+=n;    
}

void shuchu(const struct Stu *p,int n)    //学生信息输出函数
{
	printf("学生信息如下:\n");
	printf("学号\t姓名\t性别\t成绩\n");
	for(int i=0;i<n;i++)
	{
		printf("%s\t%s\t%s\t%.2lf\n",p[i].id,p[i].name,p[i].gender,p[i].score);
	}
}

void maximum(const struct Stu *p,int n)   //求学生成绩最好和最差的学生的函数
{
	int max=0,min=0;
	for(int i=0;i<n;i++)
	{
		if(p[i].score>p[max].score)  
		{
			max=i;
		}
		if(p[i].score<p[min].score)
		{
			min=i;
		}
	}
	printf("成绩最好的学生是%s\n",p[max].name);
	printf("成绩最差的学生是%s\n",p[min].name);
}

void sum_ave(const struct Stu *p,int n)      //求学生总成绩和学生平均成绩的函数
{
	float sum=0,ave=0;
	for(int i=0;i<n;i++)
	{
		sum+=p[i].score;
	}
	ave=sum/n;
	printf("学生的总成绩为:%.0f\n",sum);
	printf("学生的平均成绩为:%.2f\n",ave);
}

void sort(struct Stu *p,int n)       //排序函数
{
	int flag=0;
	printf("升序按1,降序按2>>");
	scanf("%d",&flag);
	for(int i=1;i<n;i++)
	{
		for(int j=0;j<n-i;j++)
		{
			if(flag==1)
			{
				if(p[j].score>p[j+1].score)
				{
					struct Stu temp=p[j];
					p[j]=p[j+1];
					p[j+1]=temp;
				}
			}
			if(flag==2)
			{
				if(p[j].score<p[j+1].score)
				{
					struct Stu temp=p[j];
					p[j]=p[j+1];
					p[j+1]=temp;
				}
				
			}	
		}
	}
}

int main(int argc,const char *argv[])
{
        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");

	int meau=0;
	int size=0;       //数组实际大小
	struct Stu s[MAX];
	memset(s,0,sizeof(s));
	while(1)
	{
		printf("请输入>>>");
		scanf("%d",&meau);   
		switch(meau)
		{
			case 1:
				shuru(s,&size);
				break;
			case 2:
				shuchu(s,size);
				break;
			case 3:
				maximum(s,size);
				break;
			case 4:
				sum_ave(s,size);
				break;
			case 5:
				sort(s,size);
				break;
			case 6:
				exit(0);
			default:
				printf("输入错误,请重新输入\n");
				break;
		}
	}
        return 0;
}

思维导图

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

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

相关文章

Linux C | 管道open打开方式

Linux C | 管道open打开方式 1.参考 1. 管道 2.现象 是的&#xff0c;这段代码在调用 open(AUDIOIN_FIFO, O_RDONLY) 时可能会被阻塞。原因是 FIFO&#xff08;命名管道&#xff09;在以只读模式打开时&#xff0c;如果没有其他进程以写模式打开该 FIFO&#xff0c;open 调用将…

ASP.NET Core----基础学习07----ViewStart ViewImports文件的使用

文章目录 1._ViewStart.cshtml的使用2.更换Layout文件3._ViewImports.cshtml文件的使用 1._ViewStart.cshtml的使用 step1&#xff1a; 在Views文件夹下面创建_ViewStart.cshtml文件 step2&#xff1a; 删掉视图文件中的Layout设置行 step3&#xff1a; 最终显示效果&#xff…

Redis的单线程讲解与指令学习

目录 一.Redis的命令 二.数据类型 三.Redis的key的过期策略如何实现&#xff1f; 四.Redis为什么是单线程的 五.String有关的命令 Redis的学习专栏&#xff1a;http://t.csdnimg.cn/a8cvV 一.Redis的命令 两个基本命令 在Redis当中&#xff0c;有两个基本命令&#xff1…

企业智能制造赋能的环境条件为什么重要?需要准备什么样的环境?

在全球制造业不断演进的今天&#xff0c;智能制造已经成为推动行业创新和转型的关键力量。它不仅代表了技术的革新&#xff0c;更是企业管理模式和运营思路的全面升级。然而&#xff0c;智能制造的落地实施并非一蹴而就&#xff0c;它需要企业在环境条件上做好充分的准备&#…

Java设计模式的7个设计原则

Java设计模式的7个设计原则是面向对象设计领域中的重要指导方针&#xff0c;它们旨在提高软件系统的可维护性、可扩展性、可复用性和灵活性。以下是这7个设计原则的详细解释&#xff1a; 1. 开闭原则&#xff08;Open-Closed Principle, OCP&#xff09; 定义&#xff1a;一个…

tinymce vue拓展多图上传 实现拖拽切换位置,图片排序

实现功能&#xff1a;基于tinymce TinyMCE中文文档中文手册 拖拽图片排序&#xff0c;去掉全部上传按钮&#xff0c;点击保存上传图片并关闭弹窗&#xff0c;优化了一些交互提示 声明&#xff1a;本人不是做vue前端的&#xff0c;可能有些更好的方法实现拖拽或者其他一些开源…

TS 入门(五):TypeScript接口与类

目录 前言回顾高级类型与类型操作1. 接口a. 基本接口b. 可选属性和只读属性c. 函数类型接口d. 可索引类型e. 接口继承 2. 类a. 基本类b. 类的成员&#xff08;属性和方法&#xff09;c. 构造函数d. 继承和派生类e. 公有、私有和受保护的修饰符f. 静态属性和方法g. 抽象类 扩展知…

算法篇 滑动窗口 leetcode 长度最小的子数组

长度最小的子数组 1. 题目描述2. 算法图分析2.1 暴力图解2.2 滑动窗口图解 3. 代码演示 1. 题目描述 2. 算法图分析 2.1 暴力图解 2.2 滑动窗口图解 3. 代码演示

React基础学习-Day04

React基础学习-Day04 常见的钩子函数及基础使用方式 1.useState useState 是 React 的一个 Hook&#xff0c;用于在函数组件中添加状态。它返回一个状态变量和一个更新该状态的函数。与类组件的 this.state 和 this.setState 相对应&#xff0c;useState 让函数组件也能拥有…

借助 Aspose.Words,在 C# 中将 Word 转换为 JPG

有时我们需要将 Word 文档转换为图片&#xff0c;因为 DOC 或 DOCX 文件在不同设备上的显示可能会有所不同&#xff0c;但图像&#xff08;例如 JPG 格式&#xff09;在任何地方看起来都一样。 Aspose.Words 是一种高级Word文档处理API&#xff0c;用于执行各种文档管理和操作…

设计模式-UML类图

1.UML概述 UML-统一建模语言&#xff0c;用来设计软件的可视化建模语言&#xff1b; 1.1 UML分类 静态结构图&#xff1a;类图、对象图、组件图、部署图动态行为图&#xff1a;状态图、活动图、时序图、协作图、构件图等 类图&#xff1a;反应类与类结构之间的关系&#xff0…

非法闯入智能监测摄像机:安全守护的新利器

在当今社会&#xff0c;安全问题愈发受到重视。随着科技的进步&#xff0c;非法闯入智能监测摄像机应运而生&#xff0c;成为保护家庭和财产安全的重要工具。这种摄像机不仅具备监控功能&#xff0c;还集成了智能识别和报警系统&#xff0c;能够在第一时间内检测到潜在的入侵行…

【三维AIGC】扩散模型LDM辅助3D Gaussian重建三维场景

标题&#xff1a;《Sampling 3D Gaussian Scenes in Seconds with Latent Diffusion Models》 来源&#xff1a;Glasgow大学&#xff1b;爱丁堡大学 连接&#xff1a;https://arxiv.org/abs/2406.13099 提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何…

Vue3 组件向下通信 祖孙组件的通信 provide与inject

介绍 当父子间通信可以使用props&#xff0c;祖孙使用provide&#xff08;传递&#xff09;或inject&#xff08;接收&#xff09;&#xff0c; 这时不管组件套的多深都可以向下传递。 例子 现在有一个需求&#xff0c;把App.vue的数据传递到MusciPlay.vue里。 App.vue …

Latte: Latent Diffusion Transformer for Video Generation

文章目录 AbstractIntroductionMethodology潜在扩散模型的初步研究Latte的模型变体Latte的实验验证潜在视频片段的patch embeddingTimestep-class information injectionTemporal positional embedding通过学习策略增强视频生成 Experiments Abstract Latte首先从输入的视频提…

150个pb网站模板(都是成品网站,上传php空间即可使用),建站必备

一网友提供的150个pb网站模板&#xff0c;其实就是成品网站&#xff0c;上传php空间即可使用&#xff0c;属于建站公司或者建站开发人员必备的资源。 一共150个基于pb的成品网站&#xff0c;基本上都可以找到适应你手头客户需要的一款&#xff0c;简单修改一下即可交活收钱了。…

python实例练习00001:打开文件输出文件内容

try:file input(enter the file :)with open(file, r) as f:data f.read()print(data) except FileNotFoundError:print(fthe file {file} does not exists:) 打开windows的cmd运行程序&#xff0c;效果如下&#xff1a;

晏子春秋-读书笔记四

景公游于寿春&#xff0c;坐于路寝。公曰&#xff1a;“嗟乎&#xff01;使我有此国&#xff0c;吾将如之何&#xff1f;”晏子对曰&#xff1a;“此国非君之有也&#xff0c;乃先君之有也。君若欲有之&#xff0c;则修先君之德&#xff0c;以顺民心&#xff1b;若不欲有之&…

使用Jmeter进行接口自动化测试

Jmeter接口自动化 1.接口文档分析接口四要素2.自动化2.1使用用户常量来维护自动化用例2.2使用CSV文件存储常量2.3结果断言法2.4 Json提取器 接口自动化测试的意义也相当于是自动化 测试的意义 减少人为错误&#xff1a;自动化测试可以减少人为因素带来的错误&#xff0c;确保测…

RK3399基础部分

1.RK3399介绍 基础特性&#xff1a; 高达1.8GHz的双核Cortex-A72 四核Cortex-A53高达1.4GHz NPU高达3.0TOPS Mali-T860MP4 GPU 双通道DDR3/DDR3L/LPDDR3/LPDDR4 4K超高清H265/H264/VP9 HDR10/HLG H264编码器 双MIPI CSI和ISP USB Type-CGPU: 图形处理器&#xff08;英语&…