C++U3-第3课-结构体

发布时间 2023-12-04 13:44:32作者: 小虾同学

上节课作业:

链接:https://pan.baidu.com/s/1fBx8bS-J_FPDqBzn6Omp-g?pwd=1rn5
提取码:1rn5

学习目标

在C++中,结构体(Struct)是一种用于组合多个相关数据项的自定义数据类型。结构体可以包含不同类型的成员变量和成员函数,并且可以通过.运算符来访问和操作它们。

结构体在C++中具有以下几个主要的作用:

  1. 组织数据:结构体允许将多个相关的数据项组合在一起,以便更好地组织和管理数据。通过结构体,我们可以将具有相同属性或关联性的数据项打包在一起,使代码更加模块化和清晰。

  2. 定义复合数据类型:结构体允许我们创建自定义的复合数据类型。通过定义结构体,我们可以为特定的问题域或应用程序定义具有特定属性的数据类型。这样,我们可以根据需要创建具有不同属性的结构体变量,并使用这些自定义类型进行数据处理。

  3. 传递和返回多个值:当函数需要传递或返回多个相关的值时,结构体非常有用。通过将多个值打包到一个结构体中,我们可以通过将结构体作为参数或返回值传递,从而避免使用多个独立的参数或全局变量。

  4. 嵌套数据结构:结构体可以嵌套在其他数据结构中,形成更复杂的数据结构。这种嵌套结构可以用于表示现实世界中复杂的关系和层次结构,提供更灵活和强大的数据组织能力。

  5. 面向对象编程中的基础:在C++中,结构体是类(Class)的一种形式,在面向对象编程中具有重要的作用。结构体可以拥有成员函数(方法)和访问修饰符(public、private等),使其具备类似于类的特性。结构体可以作为类的基础,通过继承和组合实现更复杂的对象模型。

总之,C++的结构体提供了一种灵活和有用的机制,用于组织和管理相关数据项,并在程序设计中起到重要的作用。无论是用于简单的数据组织还是面向对象编程中的基础,结构体都具有很高的实用性和适应性。

 结构体

 结构体定义举例

 

 

 例题,找错

 什么时候用结构体

 结构体赋值

 

 例题

 输入赋值

 

【思路分析】
1、声明结构体类型,结构体包含姓名、年龄

2、定义结构体变量,输入信息

3、按照输入顺序,依次输出每位同学的信息

【参考代码】
#include <iostream>
using namespace std;
//1、声明结构体类型,结构体包含姓名、年龄 
struct student
{
    string name;  //姓名 
    int age;     //年龄 
};
int main()
{
    //2、定义结构体变量,输入信息 
    student a, b, c;  
    cin >> a.name >> a.age;
    cin >> b.name >> b.age;
    cin >> c.name >> c.age;
    //3、按照输入顺序,依次输出每位同学的信息 
    cout << a.name << " " << a.age << '\n';
    cout << b.name << " " << b.age << '\n';
    cout << c.name << " " << c.age << '\n';
    return 0;
}
View Code

 

 结构体数组

 结构体数组赋值

 

 

例题;

[【结构体】结构体数组的遍历]

【思路分析】
1、声明结构体类型,包含三个属性,分别为姓名、分数、年龄 ,再定义结构体数组

2、定义变量,表示人数

3、输入每个学生的信息

4、按照输入顺序,依次输出每个学生的信息,控制分数的输出格式

【参考代码】
#include <iostream>
using namespace std;
//1、声明结构体类型,包含三个属性,分别为姓名、分数、年龄 ,再定义结构体数组 
struct student
{
    string name;  //姓名 
    double score; //分数 
    int age;      //年龄 
} a[109];
int main()
{
    //2、定义变量,表示人数
    int n;
    cin >> n;
    //3、输入每个学生的信息 
    for (int i = 0; i < n; i++)
        cin >> a[i].name >> a[i].score >> a[i].age;
    //4、按照输入顺序,依次输出每个学生的信息,控制分数的输出格式 
    for (int i = 0; i < n; i++)
    {
        cout << a[i].name << " ";
        printf("%.1f %d\n", a[i].score, a[i].age);
    }
    return 0;
}
View Code

 

[【结构体】体重]

【思路分析】
1、定义结构体类型,包含姓名和体重两个属性,开结构体数组

2、定义变量,输入学生人数

3、输入每个学生的信息

4、输出每个学生的信息

【参考代码】
#include <iostream>
using namespace std;
//1、定义结构体类型,包含姓名和体重两个属性,开结构体数组 
struct student
{
    string name;  //姓名
    int weight;   //体重
} a[109];
int main()
{
    //2、定义变量,输入学生人数 
    int n;
    cin >> n;
    //3、输入每个学生的信息 
    for (int i = 0; i < n; i++)
        cin >> a[i].name >> a[i].weight;
    //4、输出每个学生的信息 
    for (int i = 0; i < n; i++)
        cout << a[i].name << "->" << a[i].weight << '\n';
    return 0;
}
View Code

 

[【结构体】平均身高]

【思路分析】
输入,求出学生的平均身高,再依次判断,输出即可。求平均身高的时候注意浮点数。

1、声明结构体类型,包含两个属性:姓名和身高,定义结构体数组

2、定义变量,输入人数

3、输入学生的信息,统计累加总身高

4、求平均身高,注意浮点除

5、判断条件,依次输出

【参考代码】
#include <iostream>
using namespace std;
//1、声明结构体类型,包含两个属性:姓名和身高,定义结构体数组 
struct student
{
    string name;
    int height;
} a[10009];
int main()
{
    //2、定义变量,输入人数 
    int n;
    cin >> n;
    //3、输入学生的信息,统计累加总身高 
    double ave = 0;
    for (int i = 0; i < n; i++)
    {
        cin >> a[i].name >> a[i].height;
        ave += a[i].height;
    }
    //4、求平均身高,注意浮点数
    ave /= n;
    //5、判断条件,依次输出 
    for (int i = 0; i < n; i++)
    {
        if (a[i].height > ave)
            cout << a[i].name << " " << a[i].height << '\n';
    }
    return 0;
}
View Code

 

[【结构体】总分]

【思路分析】
求每个学生的总成绩,再求出最大值,求最大值的时候变量初始化应该为一个较小值。

1、声明结构体类型,包含姓名、语数英三科成绩,定义结构体数组

2、定义变量,输入人数

3、输入学生的信息,求出总成绩的最大值

4、判断,依次输出符合条件的学生的姓名

【参考代码】
#include <iostream>
using namespace std;
//1、声明结构体类型,包含姓名、语数英三科成绩,定义结构体数组 
struct student
{
    string name;
    int yw, sx, yy;
} a[100009];
int main()
{
    //2、定义变量,输入人数 
    int n;
    cin >> n;
    //3、输入学生的信息,求出总成绩的最大值 
    int ma = 0;
    for (int i = 0; i < n; i++)
    {
        cin >> a[i].name >> a[i].yw >> a[i].sx >> a[i].yy;
        ma = max(ma, a[i].yw + a[i].sx + a[i].yy);
    }
    //4、判断,依次输出符合条件的学生的姓名 
    for (int i = 0; i < n; i++)
    {
        if (a[i].yw + a[i].sx + a[i].yy == ma)
            cout << a[i].name << '\n';
    }
    return 0;
}
View Code

 

 

本节课作业讲解:

链接:https://pan.baidu.com/s/15QX-IYsFsFna4z_omMxrBA?pwd=iuug
提取码:iuug