【代码】结构体

哈喽大家好,我是@学霸小羊,今天讲讲结构体。

先看例题:

例1.老师给了小杨一份同学们的考试成绩,包括语数英三科,老师让小明按照总分排序,请你帮帮他吧!

输入数据:

第1行 学生总人数n(n<=1000)

第2~n+1行 每行包括3个数据 分别代表 这位同学的 语数英成绩(成绩<=100)

输出数据:

输出排序后同学们的语、数、英成绩

输入样例1:

5

89 78 100

97 90 93

78 89 67

34 78 90

90 99 100

输出样例1:

90 99 100
97 90 93
89 78 100
78 89 67
34 78 90

首先我第一时间想到的,是定义多个数组,代码打出来后,发现太复杂了!

最大的原因是不能用 sort() 排序!

#include <bits/stdc++.h>
using namespace std;
long long n,yu[1001],shu[1001],ying[1001],zonghe[1001];
int main()
{cin>>n;for(int i=1;i<=n;i++){cin>>yu[i]>>shu[i]>>ying[i];zonghe[i]=yu[i]+shu[i]+ying[i];}for(int i=1;i<=n;i++){for(int j=i+1;j<=n;j++){if(zonghe[i]<zonghe[j]) {swap(zonghe[i],zonghe[j]);swap(yu[i],yu[j]);swap(shu[i],shu[j]);swap(ying[i],ying[j]);}}}for(int i=1;i<=n;i++){cout<<yu[i]<<" "<<shu[i]<<" "<<ying[i]<<"\n";}return 0;
}

你也看到了吧,哗啦啦一大串,于是我找老师学习了一下,老师说用结构体。

结构体(struct)是由一系列具有相同类型或不同类型的数据构成的数据集合,就像char、int那些一样,只不过,这个数据类型可以自己定义包含什么,包含的变量被称为成员。

定义一个结构体,如下:

struct stu
{数据类型 成员名1;数据类型 成员名2;数据类型 成员名3;······
}​

例如:

struct stu
{int n;//定义这个结构体的成员n
};​

那么这题,就可以定义一个这样的结构体:

struct stu
{int yu,shu,ying,zonghe;
}a[1001];

为什么用结构体呢?因为结构体可以快排!

#include <bits/stdc++.h>
using namespace std;
struct stu
{int yu,shu,ying,zonghe;
}a[1001];
bool cmp(stu x,stu y)
{return x.zonghe>y.zonghe;
}
long long n;
int main()
{cin>>n;for(int i=1;i<=n;i++){cin>>a[i].yu>>a[i].shu>>a[i].ying;a[i].zonghe=a[i].yu+a[i].shu+a[i].ying;}sort(a+1,a+n+1,cmp);for(int i=1;i<=n;i++){cout<<a[i].yu<<" "<<a[i].shu<<" "<<a[i].ying<<"\n";}return 0;
}

好啦!今天就讲到这里,拜拜!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在docker中运行SLAM十四讲程序

《十四讲》的示例程序依赖比较多&#xff0c;而且系统有点旧。可以在容器中运行。 拉取镜像 docker pull ddhogan/slambook:v0.1这个docker对应的github&#xff1a;HomeLH/slambook2-docker 拉下来之后&#xff0c;假如是Windows系统&#xff0c;需要使用XLaunch用于提供X11…

面试大杂烩之kafka

面试这个领域最近环境不行&#xff0c;所以卷起来流量挺大 关于K8s 其实看我之前的博客&#xff0c;k8s刚有点苗头的时候我就研究过&#xff0c;然后工作的时候间接接触 也自己玩过 但是用的不多就忘记了&#xff0c;正苦于不知道写什么&#xff0c;水一篇 用来面试应该是够了…

C++ | Leetcode C++题解之第111题二叉树的最小深度

题目&#xff1a; 题解&#xff1a; class Solution { public:int minDepth(TreeNode *root) {if (root nullptr) {return 0;}queue<pair<TreeNode *, int> > que;que.emplace(root, 1);while (!que.empty()) {TreeNode *node que.front().first;int depth que…

VC编译sample_onnx_mnist提示无法打开输入文件cudnn.lib

出现错误 LNK1181 无法打开输入文件“C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.1\lib\x64\cudnn.lib” 解决办法&#xff1a;下载cudnn&#xff0c;NVIDIA cuDNN | NVIDIA Developer 拷贝相应的文件到CUDA安装的目录下。 VC编译libtorch提示无法打开输入文件cu…

huggingface 笔记:PretrainModel

1 from_pretrained 从预训练模型配置中实例化一个 PyTorch 预训练模型默认情况下&#xff0c;模型使用 model.eval() 设置为评估模式&#xff08;Dropout 模块被禁用&#xff09; 要训练模型&#xff0c;应该首先使用 model.train() 将其设置回训练模式 1.1 主要参数 pretra…

java 子类继承父类

为什么需要继承 我现在要有两个类一个 一个是小学生&#xff0c;一个是大学生 代码 小学生 package b; public class encapsulatio{public String name;public int age;public double score;public void setscore (double score) {this.scorescore;}public void testing() {S…

(三)MySQL 索引

欢迎访问 什么是索引&#xff1f; 提高查询效率的一种数据结构&#xff0c;索引是数据的目录 索引的分类 按「数据结构」分类&#xff1a;Btree索引、Hash索引、Full-text索引。按「物理存储」分类&#xff1a;聚簇索引、二级索引。按「字段特性」分类&#xff1a;主键索引…

Spring6 对 集成MyBatis 开发运用(附有详细的操作步骤)

详细实现操作步骤 具体实现内容&#xff1a;我们运用 Spring6 和 MyBatis 实现一个转账操作(该转账操作&#xff0c;进行一个事务上的控制&#xff0c;运用 MyBatis 执行 SQL 语句)。 第一步&#xff1a;准备数据库表 使用t_act表&#xff08;账户表&#xff09; 连接数据库的…

三个有意思的链表面试题的完成

上一篇博客我们已经完成了链表的所有内容&#xff0c;那么这一篇博客我们来看一下三个特别有意思的链表题目。 **第一个题目如下&#xff1a;**相信不少朋友看到这题目就已经晕了&#xff0c;那就简单说明下这个题目&#xff0c;题目就是创建一个链表&#xff0c;其中每个节点…

深入探索Java中的流式编程:优雅地处理集合数据

Java流式编程&#xff08;Stream API&#xff09;是Java 8引入的一项重要特性&#xff0c;它为处理集合数据提供了一种更为优雅和函数式的方式。通过流式操作&#xff0c;开发者可以以更简洁、更直观的方式处理数据&#xff0c;从而提高代码的可读性和可维护性。本文将深入探讨…

Android14 - 绘制系统 - 概览

从Android 12开始&#xff0c;Android的绘制系统有结构性变化&#xff0c; 在绘制的生产消费者模式中&#xff0c;新增BLASTBufferQueue&#xff0c;客户端进程自行进行queue的生产和消费&#xff0c;随后通过Transation提交到SurfaceFlinger&#xff0c;如此可以使得各进程将缓…

【vue3+elementuiplus】el-select下拉框会自动触发校验规则

场景&#xff1a;编辑弹框省份字段下拉框必填&#xff0c;触发方式change&#xff0c;有值第一次打开不会触发校验提示&#xff0c;关闭弹框再次打开触发必填校验提示&#xff0c;但是该字段有值 问题的原因是&#xff1a;在关闭弹层事件中&#xff0c;我做了resetfileds&…

SpringBoot + MybatisPlus

SpringBoot MybatisPlus 整合记录 1. 硬件软件基本信息2. 相关链接3. 通过idea快速生成一个Springboot项目4. 启动报错问题解决问题一&#xff1a;Springboot启动的时候报错提示 “没有符合条件的Bean关于Mapper类型”问题二&#xff1a;启动的时候提示需要一个Bean&#xff0…

电磁仿真--CST网格介绍

1. 简介 网格会影响仿真的准确性和速度&#xff0c;花时间理解网格化过程是很重要的。 CST 中可用的数值方法包括FIT、TLM、FEM、MoM&#xff0c;使用不同类型的网格&#xff1a; FIT和TLM&#xff1a;六面体 FEM&#xff1a;四面体、平面 MoM&#xff1a;表面 CFD&#…

深入理解与防御跨站脚本攻击(XSS):从搭建实验环境到实战演练的全面教程

跨站脚本攻击&#xff08;XSS&#xff09;是一种常见的网络攻击手段&#xff0c;它允许攻击者在受害者的浏览器中执行恶意脚本。以下是一个XSS攻击的实操教程&#xff0c;包括搭建实验环境、编写测试程序代码、挖掘和攻击XSS漏洞的步骤。 搭建实验环境 1. 安装DVWA&#xff…

【408真题】2009-16

“接”是针对题目进行必要的分析&#xff0c;比较简略&#xff1b; “化”是对题目中所涉及到的知识点进行详细解释&#xff1b; “发”是对此题型的解题套路总结&#xff0c;并结合历年真题或者典型例题进行运用。 涉及到的知识全部来源于王道各科教材&#xff08;2025版&…

推荐一个快速开发接私活神器

文章目录 前言一、项目介绍二、项目地址三、功能介绍四、页面显示登录页面菜单管理图表展示定时任务管理用户管理代码生成 五、视频讲解总结 前言 大家好&#xff01;我是智航云科技&#xff0c;今天为大家分享一个快速开发接私活神器。 一、项目介绍 人人开源是一个提供多种…

SCSS配置教程

SCSS&#xff08;Sassy CSS&#xff09;是 Sass&#xff08;Syntactically Awesome Stylesheets&#xff09;的一种语法&#xff0c;它是一种 CSS 预处理器&#xff0c;允许你使用变量、嵌套规则、混合&#xff08;mixin&#xff09;、函数等高级功能来编写 CSS&#xff0c;从而…

Golang | Leetcode Golang题解之第112题路径总和

题目&#xff1a; 题解&#xff1a; func hasPathSum(root *TreeNode, sum int) bool {if root nil {return false}if root.Left nil && root.Right nil {return sum root.Val}return hasPathSum(root.Left, sum - root.Val) || hasPathSum(root.Right, sum - roo…

C++常见知识点总结

常见字符 * 注释&#xff1a;/* 这是一个注释*/乘法&#xff1a;a * b取值运算符&#xff1a;*指针变量&#xff0c;int a 4&#xff0c;*a &#xff1f;&#xff1f;&#xff1f;&#xff1f;指针变量&#xff1a;数据类型 *变量名&#xff0c; int *no &bh&#xff0…