1. 学生结构体:姓名,分数
2. 老师结构体:姓名,学生数组(长度为5)
3. 功能:创建老师结构体数组,每个老师单元有一个学生数组,每个学生数组包括姓名和分数,函数1实现对老师和其学生信息的赋值,函数2实现对所有信息的打印
#include<iostream>
#include<string>
#include<ctime>
using namespace std;
struct Student {
string name;
int score;
};
struct Teacher {
string name;
//学生结构体数组
Student arr[5];
};
void allocateSpace(Teacher* arr1, int length){
string name = "ABCDE";
for (int i = 0; i < length; i++)
{
arr1[i].name = "Teacher_";
arr1[i].name = arr1[i].name + name[i];
cout << "下面进行老师" << name[i] << "的学生的分数赋值" << endl;
//学生赋值
for (int j = 0; j < 5; j++)
{
//对学生分数一一赋值
int score;
cout << "学生" << name[j] << "的分数为:" << endl;
cin >> score;
arr1[i].arr[j].name = "Student_";
arr1[i].arr[j].name = arr1[i].arr[j].name + name[j];
arr1[i].arr[j].score = score;
}
}
}
void printarr(Teacher* arr1, int length) {
system("pause");
for (int i = 0; i < length; i++)
{
cout << arr1[i].name << endl;
for (int j = 0; j < 5; j++)
{
cout << arr1[i].arr[j].name << " " << arr1[i].arr[j].score << endl;
}
}
}
int main() {
//创建老师数组
Teacher arr1[3] = {};
//计算老师数组长度
int length = sizeof(arr1) / sizeof(arr1[0]);
//通过函数对结构体进行赋值
allocateSpace(arr1, length);
//打印输出函数
printarr(arr1, length);
system("pause");
return 0;
}
一开始想先对学生赋值再把学生装到老师中,但都不如嵌套循环赋值方便。因此记录下来这个好方法。需要注意:
1. 函数的形参我都设置的是指针,传地址的
2. 注意循环嵌套时数组下标索引,老师对应的是i,学生对应的是j
只要不搞混,就很方便。