了解结构体以及结构体数组

C语言的结构体你真的了解吗?   一起来看一下吧!!!
1.结构体是啥?

          结构体是多种数据类型的组合体

2.格式(一般放在主函数前,也就是int main()前面 )
关键字  结构体名字  {成员列表}
sturct  结构体名字  {成员列表}
//例如
struct date{
int year;
int month;   // 类型名 + 成员名
int day;
};                //   !!!不要忘记这里的‘;’
3.简单结构体展示
#include <bits/stdc++.h>
using namespace std;
struct date{int year;int month;int day;
};
int main(){struct date today;     //定义结构体变量today.year = 2024;     // 输入结构体成员的值(!!!法一)today.month = 1;today.day = 10;printf("today is %d.%02d.%02d",today.year,today.month,today.day);//   %02d 是将不足两位的补零return 0;
}
运行结果:
today is 2024.01.10
声明两个日期(声明变量):

法一:(注意today,tomoorrow;位置)

#include <bits/stdc++.h>
using namespace std;
struct date{int year;int month;int day;
}today,tomoorrow;    //在在在在在在在这声明了两个日期,后面可以直接用了 
int main(){today.year = 2024;     // 输入结构体成员的值today.month = 1;today.day = 10;struct date tomorrow = {.year = 2024,.month = 1,.day = 11	};printf("today is %d.%02d.%02d\n",today.year,today.month,today.day);printf("tomorrow is %d.%02d.%02d",tomorrow.year,tomorrow.month,tomorrow.day);//   %02d 是将不足两位的补零return 0;
}

法二:

#include <bits/stdc++.h>
using namespace std;
struct date{int year;int month;int day;
};    
int main(){struct date today,tomoorrow;    //在在在在在在在这声明了两个日期today.year = 2024;              // 法法法111输入结构体成员的值today.month = 1;today.day = 10;struct date tomorrow = {.year = 2024,.month = 1,.day = 11	};//法法法222输入输入结构体成员的值printf("today is %d.%02d.%02d\n",today.year,today.month,today.day);printf("tomorrow is %d.%02d.%02d",tomorrow.year,tomorrow.month,tomorrow.day);//   %02d 是将不足两位的补零return 0;
}

运行结果:
today is 2024.01.10
tomorrow is 2024.01.11

先不要着急,为什么看不懂,前两个代码的运行和结果让你先看看结构体,看看就行,有个了解

4.上题目:实践起来

5.代码:
#include <bits/stdc++.h>
using namespace std;
struct student {string name;                  int g;
}a[25];                         //定义结构体 
bool cmp(student x,student y){if (x.g == y.g) return x.name < y.name;   //如果结构体中x的成绩与y的成绩一样,就比较名字的首字母字典排序    else return x.g>y.g;}                     // 找出结构体中成绩高的 
int main()
{int n;cin >> n;for(int i=0;i<n;i++){cin>>a[i].name>>a[i].g;             //输入结构体成员的值 }sort(a,a+n,cmp);                        //sort排序 for(int i=0;i<n;i++)     {cout<<a[i].name<<" "<<a[i].g<<endl;  //输出结构体 }return 0;
}
6.主要知识点:
       (1)怎样写结构体的cmp函数;
bool cmp(student x,student y){  //类型很重要,这里用结构体的类型if (x.g == y.g) return x.name < y.name;   //如果结构体中x的成绩与y的成绩一样,就比较名字的首字母字典排序    else return x.g>y.g;}                     // 找出结构体中成绩高的 
      (2)cmp的字典排序:

因为return x.g>y.g返回的是倒序,这个字母大小是按ascll码排序的 所以要用

return x.name < y.name  //因为name是字符,不用考虑其他的东西
   (3)输入结构体成员:(输出同理)
int n;cin >> n;for(int i=0;i<n;i++){cin>>a[i].name>>a[i].g;             //输入结构体成员的值 }
7.来再刷一道题,巩固巩固刚刚学到的知识
               题目:

              代码: 
#include <bits/stdc++.h>
using namespace std;
struct stu{string x;string y;double z;}a[25];bool cmp(stu a,stu b)  
{return a.z<b.z;
}
int main()
{int n;cin>>n;for(int i=0;i<n;i++){cin>>a[i].x>>a[i].y>>a[i].z;}sort(a,a+n,cmp);for(int i=0;i<n;i++) cout<<a[i].x<<"\t"<<a[i].y<<"\t"<<fixed<<setprecision(2)<<a[i].z<<endl;return 0;
}
100.补充:使用typedef 简化结构体

        每次定义时都要输入struct  结构体名字   xxx;我们想办法让他简单一点,就使用typedef函数,因为时间原因,作为码农的你去收集资料弄懂吧!!!

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

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

相关文章

python代码练习:双指针法

题目一&#xff1a;移除元素 给你一个数组 nums 和一个值 val&#xff0c;你需要 原地 移除所有数值等于 val 的元素&#xff0c;并返回移除后数组的新长度。 不要使用额外的数组空间&#xff0c;你必须仅使用 O(1) 额外空间并 原地 修改输入数组。 元素的顺序可以改变。你不…

「HDLBits题解」Module

本专栏的目的是分享可以通过HDLBits仿真的Verilog代码 以提供参考 各位可同时参考我的代码和官方题解代码 或许会有所收益 题目链接&#xff1a;Module - HDLBits module top_module ( input a, input b, output out );mod_a u1 (.in1(a), .in2(b), .out(out)) ; endmodule

[足式机器人]Part3 机构运动学与动力学分析与建模 Ch00-2(1) 质量刚体的在坐标系下运动

本文仅供学习使用&#xff0c;总结很多本现有讲述运动学或动力学书籍后的总结&#xff0c;从矢量的角度进行分析&#xff0c;方法比较传统&#xff0c;但更易理解&#xff0c;并且现有的看似抽象方法&#xff0c;两者本质上并无不同。 2024年底本人学位论文发表后方可摘抄 若有…

【论文阅读】Deep Graph Infomax

目录 0、基本信息1、研究动机2、创新点2.1、核心思想&#xff1a;2.2、思想推导&#xff1a; 3、准备3.1、符号3.2、互信息3.3、JS散度3.4、Deep InfoMax方法3.5、判别器&#xff1a;f-GAN估计散度 4、具体实现4.1、局部-全局互信息最大化4.2、理论动机 5、实验设置5.1、直推式…

[Linux]网卡配置修改

CentOS修改网卡配置 Ubuntu 修改配置文件方式 使用vim命令&#xff0c;打开/etc/resolv.conf文件&#xff0c;按i开始编辑 #DNS #代表注释 nameserver 127.0.0.53ESC之后:wq保存退出 重启网络服务 service networking restartnetplan方式 Ubuntu 18.04开始&#xff0c;可…

C# 使用Fleck创建WebSocket服务器

目录 写在前面 代码实现 服务端代码 客户端代码 调用示例 写在前面 Fleck 是 C# 实现的 WebSocket 服务器&#xff0c;通过 WebSocket API&#xff0c;浏览器和服务器只需要做一个握手的动作&#xff0c;然后浏览器和服务器之间就形成了一条快速通道&#xff1b;两者之间…

1.5 Unity中的数据存储 PlayerPrefs

Unity中的三种数据存储&#xff1a;数据存储也称为数据持久化 一、PlayerPrefs PlayerPrefs是Unity引擎自身提供的一个用于本地持久化保存与读取的类&#xff0c;以键值对的形式将数据保存在文件中&#xff0c;然后程序可以根据关键字提取数值。 PlayerPrefs类支持3种数据类…

文章解读与仿真程序复现思路——电网技术EI\CSCD\北大核心《计及储能参与的电能-调频-备用市场日前联合交易决策模型》

本专栏栏目提供文章与程序复现思路&#xff0c;具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 这个标题涉及到电能、调频和备用市场的联合交易决策模型&#xff0c;并特别考虑了储能在其中的参与。 电能市场&#xff1a; 这是指电能的买卖市场&…

What does `rpm -e` do?

卸载 rpm包 rpm -e php 卸载匹配的所有rpm包rpm -e $(rpm -qa php*) 卸载匹配的所有rpm包[Ref] Erase multiple packages using rpm or yum Further Reading &#xff1a;Linux rpm 命令

Java使用IText生产PDF时,中文标点符号出现在行首的问题处理

Java使用IText生成PDF时&#xff0c;中文标点符号出现在行首的问题处理 使用itext 5进行html转成pdf时&#xff0c;标点符号出现在某一行的开头 但这种情况下显然不符合中文书写的规则&#xff0c;主要问题出在itext中的DefaultSplitCharacter类&#xff0c;该方法主要用来判断…

SpringMVC-02

添加EnableWebMvc //配置json转化器 &#xff08;使用postman&#xff09; 可以不用写下面两个方法了 Bean public RequestMappingHandlerMapping handlerMapping(){ return new RequestMappingHandlerMapping(); } Bean public RequestMappingHandlerAdapter handlerAdapter()…

04- OpenCV:Mat对象简介和使用

目录 1、Mat对象与IplImage对象 2、Mat对象使用 3、Mat定义数组 4、相关的代码演示 1、Mat对象与IplImage对象 先看看Mat对象&#xff1a;图片在计算机眼里都是一个二维数组&#xff1b; 在OpenCV中&#xff0c;Mat是一个非常重要的类&#xff0c;用于表示图像或矩阵数据。…

⭐Unity 将电脑打开的窗口画面显示在程序中

1.效果&#xff1a; 下载资源包地址&#xff1a; Unity中获取桌面窗口 2.下载uWindowCapturev1.1.2.unitypackage 放入Unity工程 3.打开Single Window场景&#xff0c;将组件UwcWindowTexture的PartialWindowTitle进行修改&#xff0c;我以腾讯会议为例 感谢大家的观看&#xf…

CSS3实现轮播效果

在我们不使用JS的情况下&#xff0c;是否也可以实现轮播功能呢&#xff1f; 答应是可以的 上代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>轮播</title><style>.boss…

激活函数整理

sigmoid函数 import torch from d2l import torch as d2l %matplotlib inline ​ xtorch.arange(-10,10,0.1,requires_gradTrue) sigmoidtorch.nn.Sigmoid() ysigmoid(x) ​ d2l.plot(x.detach(),y.detach(),x,sigmoid(x),figsize(5,2.5)) sigmoid函数连续、光滑、单调递增&am…

Java language programming:判断整数n是否在数组中存在

题目&#xff1a;已知给定一个整数数组&#xff0c;输入一个整数n&#xff0c;那么如果该整数n存在于这个数组中&#xff0c;则需要输出下标&#xff1b;如果不存在的话&#xff0c;则需要输出-1。 输入格式&#xff1a; 1 9 输出格式&#xff1a; 0 -1 import java.util.*; …

python爬取诗词名句网-三国演义,涉及知识点:xpath,requests,自动识别编码,range

页面源代码: <!DOCTYPE html> <html lang="zh"> <head><script src="https://img.shicimingju.com/newpage/js/all.js"></script><meta charset="UTF-8"><title>《三国演义》全集在线阅读_史书典籍_…

mysql 分组函数,分组查询

#1.分组函数 功能&#xff1a;用作统计使用&#xff0c;又称聚合函数&#xff0c;统计函数&#xff0c;组函数 分类: sum :求和&#xff0c;avg 平均值&#xff0c;max最大值&#xff0c;min最小值&#xff0c;count计算个数 特点: sum, avg 一般用于处理数值型 max ,min ,coun…

metartc5_jz源码阅读-udp->receive

之前在metartc5_jz源码阅读-yang_run_rtcudp_thread-CSDN博客中说到&#xff1a; //调用udp的receive方法将读取的buffer和udp->user传入。 if (udp->receive) udp->receive(buffer, len, udp->user); 这个函数在以下代码中已经设置执行函数&#xff1a; sessio…

RV1126边缘计算AI盒子,支持4-6路1080p视频,2T 算力

1 产品概述 信迈推出基于瑞芯微Rockchip RV1126架构的AI边缘计算主板&#xff0c;RV1126芯片是四核ARM Cortex-A7,1.5GHz&#xff0c; RSIC-V 200MHz CPU &#xff0c;NPU2.0Tops。AI边缘计算主板外围接口丰富&#xff0c;拥有超强扩展性&#xff0c;可广泛应用在智慧安防、工…