案例描述:每名老师带领5个学生,总共有3名老师,设计学生和老师的结构体

#include<iostream>
#include<string>
using namespace std;
struct Student
{
    string name;
    int score;
};
struct Teacher
{
    string name;
    Student StudentArr[5];
};
void list(Teacher TeacherArr[], int len)
{
    for (int i = 0; i < len; i++)
    {
        string num = "ABCDE";
        TeacherArr[i].name = "Teacher_";
        TeacherArr[i].name = TeacherArr[i].name + num[i];
        cout << TeacherArr[i].name <<"老师带的学生有:"<< endl;
        for (int j = 0; j < 5; j++)
        {
            string num2 = "ABCDE";
            TeacherArr[i].StudentArr[j].name = "Student_";
            TeacherArr[i].StudentArr[j].name = TeacherArr[i].StudentArr[j].name + num2[j];
            cout << TeacherArr[i].StudentArr[j].name << endl;
        
        }
        cout << endl;
    }

int main()
{
    Teacher TeacherArr[3];
    int len = sizeof(TeacherArr) / sizeof(TeacherArr[0]);
    list(TeacherArr, len);
    system("pause");
    return 0;
}

### 创建C++程序定义教师学生结构体 为了构建一个表示教师与学生之间关系的模型,在C++中可以使用`struct`来定义两个结构体:一个是用于描述学生结构体,另一个是用于描述教师的结构体。每个教师对象将持有对其所教的一组学生的引用。 #### 定义学生结构体 学生结构体应当至少包含两个成员变量——姓(string类型) 成绩(float或int类型),这可以通过如下方式实现: ```cpp #include <string> using namespace std; // 学生结构体 struct Student { string name; // 姓 float score; // 分数 // 构造函数初始化列表设置默认值 Student(const string& n="", float s=0.0f):name(n),score(s){} }; ``` #### 定义教师结构体 对于教师而言,除了拥有自己的字外,还需要能够管理一组学生的信息。这里采用数组的方式存储五个学生实例,并通过指针访问这些数据[^1]。 ```cpp // 教师结构体 struct Teacher { string name; Student* students[5]; // 每位老师最多负责五学生 // 构造函数初始化列表设置默认值 Teacher(const string& t_name=""):name(t_name){ for(int i = 0;i<5;++i) students[i]=nullptr; // 初始化为空指针 } ~Teacher(){ for(auto &s : students){delete s;} } void addStudent(Student *stu, int index){ if(index >= 0 && index < 5){ delete students[index]; students[index] = stu; }else{ cout << "Index out of range." << endl; } } }; ``` 上述代码片段展示了如何利用C++中的结构体特性建立简单的师生关联模型。注意这里的销毁操作是为了防止内存泄漏而加入的析构函数逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值