Homework Introduction

什么是结构体?

在实际问题中,一组数据往往具有不同的数据类型。例如,人口大普查时,我们需要记录每一位公民的姓名,年龄,性别,住址,身份证号码等信息。这些信息分别要用整型,字符型,字符串型来记录。

为了更方便地解决这类问题,C++语言给出了另一种构造数据类型——结构体。

结构体基本用法

创建一个学生结构体(注意:结构体名一般首字母大写,与普通数据类型名区分开):

struct Student{
     string name;
     int age;
     int score;
     char gender;
     bool is_leader;
 };

创建结构体变量初始化赋值:

1.统一赋值:使用 { }

Student xiaoming = {"小明", 10, 300, 'm', true};

2.分别赋值:变量名.属性名

Student xiaoming;
xiaoming.name = "小明";
xiaoming.age = 10;
xiaoming.score = 300;
xiaoming.gender = 'm';
xiaoming.is_leader = true;

结构体数组

struct Student{
     string name;
     int age;
     int score;
 }students[N];
 ​
 int main() {
     
     int n;
     cin >> n;
     for(int i = 1; i <= n; i++)
         cin >> students[i].name >> students[i].age >> students[i].score;
 ​
     for(int i = 1; i <= n; i++)
         cout << students[i].name << " ";
 ​
     return 0;
 }

结构体排序

自定义比较函数

// 按照分数从大到小排序,如果分数相同,按照年龄从小大到排序
 bool cmp(Student& a, Student& b){
     if(a.score == b.score)
         return a.age < b.age;
     return a.score > b.score;
 }
 ​
 sort(students + 1, students + n + 1, cmp);

运算符重载

// 按照分数从大到小排序,如果分数相同,按照年龄从小  大到排序
 struct Student{
     string name;
     int age;
     int score;
     bool operator < (const Student& x) const{
         if(score == x.score)
             return age < x.age;
         return score > x.score;
     }
 }students[N];
 ​
 sort(students + 1, students + n + 1);

Problem

Please claim the assignment to see the problems.
Status
Live...
Problem
4
Open Since
2024-2-11 0:00
Deadline
2036-8-23 23:59
Extension
24 hour(s)