このコードは、主に教師と生徒の情報を含むデータ構造を作成および印刷するために使用される単純な C++ プログラムです。
コードでは、Student
と の2 つの構造が定義されていますTeacher
。Student
構造体には生徒の名前と学年が含まれ、Teacher
構造体には教師の名前と 5 人の生徒の配列が含まれます。
allocateSpace
Teachers 配列にスペースを割り当て、データを埋める関数。教師の配列と配列の長さをパラメータとして受け入れます。関数内では、Teachers 配列をループして各教師の名前を設定し、次に各教師の Student 配列に生徒の名前とランダムに生成された成績を設定します。
この関数は、printTeachers
Teachers 配列内のデータを出力するために使用されます。教師の配列と配列の長さをパラメータとして受け入れます。関数内では、Teachers 配列をループして各教師の名前を出力し、次に各教師の Students 配列内の各生徒の名前と学年を出力します。
この関数ではmain
、最初に乱数シードを設定し、次に 3 人の教師を含む教師の配列を定義しますtArray
。Teachers 配列の長さを計算し、その長さを引数としてallocateSpace
and関数に渡すことによりprintTeachers
、データを作成して出力します。最後に、system("pause")
関数を使用して結果を出力した後にプログラムを一時停止し、結果を確認できるようにします。
要約すると、プログラムは構造体と配列を通じて教師と生徒の情報を保存および管理し、対応する関数を呼び出すことでデータを入力し、結果を出力します。
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
// 定义学生结构体
struct Student
{
string name; // 学生姓名
int score; // 学生成绩
};
// 定义教师结构体
struct Teacher
{
string name; // 教师姓名
Student sArray[5]; // 学生数组,包含5个学生
};
// 为教师数组分配空间并填充数据
void allocateSpace(Teacher tArray[], int len)
{
string tName = "教师"; // 教师姓名前缀
string sName = "学生"; // 学生姓名前缀
string nameSeed = "ABCDE"; // 姓名生成的种子,用于拼接学生姓名
for (int i = 0; i < len; i++)
{
tArray[i].name = tName + nameSeed[i]; // 设置教师姓名
// 填充学生数组的数据
for (int j = 0; j < 5; j++)
{
tArray[i].sArray[j].name = sName + nameSeed[j]; // 设置学生姓名
tArray[i].sArray[j].score = rand() % 61 + 40; // 随机生成学生成绩(40-100之间)
}
}
}
// 打印教师数组中的数据
void printTeachers(Teacher tArray[], int len)
{
for (int i = 0; i < len; i++)
{
cout << tArray[i].name << endl; // 打印教师姓名
for (int j = 0; j < 5; j++)
{
cout << "\t姓名:" << tArray[i].sArray[j].name << " 分数:" << tArray[i].sArray[j].score << endl; // 打印学生姓名和成绩
}
}
}
int main() {
srand((unsigned int)time(NULL)); // 设置随机数种子,用于生成随机学生成绩
Teacher tArray[3]; // 定义包含3个教师的教师数组
int len = sizeof(tArray) / sizeof(Teacher); // 计算教师数组的长度
allocateSpace(tArray, len); // 创建数据
printTeachers(tArray, len); // 打印数据
system("pause"); // 暂停程序,以便查看结果
return 0;
}