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

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.hqwc.cn/news/338937.html

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

相关文章

Linux 文件(夹)权限查看

命令 : ls -al ls -al 是一个用于列出指定目录下所有文件和子目录的命令,包括隐藏文件和详细信息。其中,-a 选项表示显示所有文件,包括以 . 开头的隐藏文件,-l 选项表示以列表的形式显示文件的详细信息。 本例中:drwxrwxr-x 为权限细节。 权限细节(Permission detail…

rke2 Online Deploy Rancher v2.8.0 latest (helm 在线部署 rancher v2.8.0)

文章目录 1. 简介2. 预备条件3. 安装 helm4. 安装 cert-manager4.1 yaml 安装4.2 helm 安装 5. 安装 rancher6. 验证7. 界面预览 1. 简介 Rancher 是一个 Kubernetes 管理工具&#xff0c;让你能在任何地方和任何提供商上部署和运行集群。 Rancher 可以创建来自 Kubernetes 托…

1.10 Unity中的数据存储 XML

一、XML 1.介绍 XML是一个文档后缀名是*.xmlXML是一个特殊格式的文档XML是可扩展的标记性语言XML是Extentsible Markup Language的缩 写XML是由万维网联盟(W3C)创建的标记语言&#xff0c;用于定义编码人类和机器可以读取的文档的语法。它通过使用定义文档结构的标签以及如何…

陶瓷碗口圆度检测案例-圆心定位与圆度检测

检测原理 从陶瓷外边界上面随机提取3个点&#xff0c;并以其行列位置为横纵坐标构造三对坐标点。利用此三点可确定三角形外心。公式计算如下&#xff1a; x0和y0为圆心的位置坐标&#xff0c;为标准圆的半径。 在实际中&#xff0c;存在以下两种情况会导致上述算法无法准确计…

MySQL 从零开始:02 MySQL 安装

文章目录 1、下载 MySQL 安装程序2、安装 MySQL 要操作 MySQL &#xff0c;首先要安装 MySQL &#xff0c;本文将一步步展示如何安装 MySQL&#xff0c;简直详细到令人发指。 环境&#xff1a; 操作系统&#xff1a;Windows10 64位MySQL版本&#xff1a;社区版 8.0.11.0 1、下…

办公自动应用,HR大屏可视化模板

大家可以进行资料下载。 完整的案例。 AIGC ChatGPT 职场案例 AI 绘画 与 短视频制作 PowerBI 商业智能 68集 数据库Mysql 8.0 54集 数据库Oracle 21C 142集 Office 2021实战应用 Python 数据分析实战&#xff0c; ETL Informatica 数据仓库案例实战 Excel 2021实操 100集&a…

C++面试宝典第18题:旋转数组

题目 给定一个数组,将数组中的元素向右移动k个位置,其中k是非负数。要求如下: (1)尽可能想出更多的解决方案,至少有三种不同的方法可以解决这个问题。 (2)使用时间复杂度为O(n)和空间复杂度为O(1)的原地算法解决这个问题。 示例 1: 输入: [1, 2, 3, 4, 5, 6, 7] 和 k…

Edge 浏览器如何设置自动刷新

Edge 浏览器设置自动刷新有两种方式 安装Edge浏览器自动刷新扩展更改页面的源代码文件 目录 方式一&#xff1a;Edge 自动刷新扩展实现&#xff08;推荐&#xff09; 方式二&#xff1a;更改页面的源代码文件 实现页面自动刷新&#xff08;不推荐&#xff09; 方式一&#xff…

CSAPP阅读笔记-信息的表示和处理

信息的表示和处理 包括整数、浮点数的存储格式、计算中可能存在的问题等 信息存储 大多数计算机使用8位的块&#xff0c;或者字节(byte)&#xff0c;作为最小的可寻址的内存单位&#xff0c;而不是访问内存中单独的位。机器级程序将内存视为一个非常大的字节数组&#xff0c…

alertmanager高可用集群的部署方案

目录 alertmanager集群模式如何形成&#xff1f; 先看看prometheus这边怎么配 非容器部署 基于容器部署 alertmanager集群模式如何形成&#xff1f; 官方的&#xff1a;Alertmanager | Prometheus GitHub - prometheus/alertmanager: Prometheus Alertmanager 基本上就是…

Element Plus 离线手册 下载

Element Plus (Vue3) 离线手册&#xff0c;解压就能用&#xff0c;双击运行&#xff0c;浏览器访问 http://localhost:7011 获取方式&#xff1a;原文关注微信公众号&#xff0c;回复消息&#xff1a;7011ELP Element Plus 离线手册 下载Vue3 Element Plus 离线手册 离线文档 …

揭秘LoRA与QLoRA:百次实验告诉你如何微调LLM!

原文链接&#xff1a;揭秘LoRA与QLoRA&#xff1a;百次实验告诉你如何微调LLM&#xff01;​​​​​​​ LoRA&#xff08;低秩适应&#xff09;是目前应用最广泛、参数效率最高的自定义大型语言模型&#xff08;LLM&#xff09;微调技术之一。本文不仅介绍了使用QLoRA节省内存…