前言
本人是xxs蒟蒻,并不了解厉害的算法,觉得内容简单轻喷。
正题
结构体定义
结构体属于用户自定义的数据类型,允许用户存储不同的数据类型。
结构体的声明格式(伪代码)
注意末尾要有分号。
结构体变量的声明
这里有333个方法。
方法一: struct Player p1;
方法二: Player p1;
方法三: 在声明格式的最后一个分号前写上结构体变量名。
当然结构体数组也同理。
结构体成员的访问
当我们需要访问结构体里的某一元素时,需要通过.来访问.
例: p1.blood; p1.defense;
结构体变量的赋值
我们在复制时可以先访问变量再进行赋值。
例: p1.name="syh";
结构体变量的初始化
与结构体的赋值差不多,下面的例子可以助于理解。
例:Player p1={"syh",100,10,15};
注意:初始化时必须按照声明时的成员顺序,少/多赋值或类型不一样会导致错误。
结构体类型数组的初始化
例:
结构体的输入输出
例:cin>>p1.name; cout<<p1.name;
拓展知识(比较函数cmpcmpcmp)
编写方法(伪代码):
如果是要从大到小排序,可以将规则设为return a.mark>b.mark;这种。
同理,从小到大可以为return a.mark<b.mark;。
具体例子:
这里有个注意点,cmpcmpcmp函数需要写在结构体的声明后,不然是不能使用结构体类型的。
例题:
洛谷 B2125 最高分数的学生姓名
这道题考查了结构体数组的使用,我们先定义数组,再比较每个成绩,最后输出最大的即可。
洛谷 B2158 谁考了第 K 名
这道题与上题相似,由于成绩排名从大到小排,所以cmpcmpcmp函数要返回a.mark>b.mark把成绩排完后直接输出第 pk 项的编号与成绩即可。
后记
大佬们这篇算是syh的一个自我复习,排版太拉了致歉,如果有好的建议可以发在plq,谢谢大家了。