结构体和枚举

结构体:是由一系列具有相同类型或不同类型的数据构成的数据集合,也叫结构。

声明格式:
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 };

枚举类型在必要时,如参与算术运算时,会被自动提升为算术类型
能表示枚举成员值的范围
枚举的成员名字是不可打印的,输出的是它所表示的整数值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值