结构体:是由一系列具有相同类型或不同类型的数据构成的数据集合,也叫结构。
声明格式:
struct 类型名{
数据类型1 成员名1;
数据类型2 成员名2;
…
成员函数
};
特点:
可以对结构体变量整体进行操作。
可以对结构体变量的成员进行操作 变量名.成员名
结构体变量的初始化方法与数组类似
结构体内可以定义成员函数
【问题描述】
输入 n 个学生的信息,每个学生信息包括姓名、身高、学号。编程输出身高最高的学生的信息。
【输入格式】
第 1 行一个正整数 n,表示学生个数,n≤100。
以下 n 行,每一行依次输入学生的姓名、身高、学号。
【输出格式】
输出最高的学生信息,如存在身高一样的请输出学号小的那个同学。
【输入样例】
5
John 172 20160302 【输出样例】David 173 20160306
David 173 20160306
Jason 168 20160309
Jack 152 20160311
Kitty 147 20160319
#include<bits/stdc++.h>
using namespace std;
struct stu{
string name;
int heigh;
int num;
void input(){
cin >> name >> heigh >> num;
}
void output(){
cout << name << “ “ << heigh << “ “ << num << endl;
}
};
stu a[110];
int main(){
int n;
stu maxn;
maxn.heigh = maxn.num = 0;
cin >> n;
for(int i = 1; i <= n; i++){
a[i].input();
if(a[i].heigh > maxn.heigh) maxn = a[i];
else if(a[i].heigh == maxn.heigh && a[i].num < maxn.num) maxn = a[i];
}
maxn.output();
return 0;
}
重载运算符
常用于解决结构体或自定义数据类型的加法、减法等特殊含义的运算。
运算符重载的一般格式:
类型名 operator 运算符 (const 类型名 变量)const{
…
}
大致举例
#include<bits/stdc++.h>
using namespace std;
struct Student
{
string name;
int age;
double score;
//两个学生相加==两个学生分数相加
Student operator +(const Student student1) const{
Student x;
x.score=score+student1.score;
return x;
}
};
int main()
{
Student a,b;
a.name="张三";
a.age=18;
a.score=98;
b.name="李四";
b.age=20;
b.score=86;
Student c;
c=a+b;
cout<<c.name<<" "<<c.age<<" "<<c.score<<endl;
return 0;
}
枚举
枚举类型定义了一组命名的整数常量,以提高代码的可读性
enum TrafficLight { red, green, yellow };
枚举类型在必要时,如参与算术运算时,会被自动提升为算术类型
能表示枚举成员值的范围
枚举的成员名字是不可打印的,输出的是它所表示的整数值