#include<iostream>
#include<string>
#include<ctime>
using namespace std;
/*
结构体案例
*/
struct stu {
string sname;
int score;
};
struct tea {
string tname;
struct stu sarray[5];
};
void allocatesapce(tea tarray[],int len) //这里的tea tarray[]等价于 tea *tarray 数组作为参数传递给函数的只是数组首元素的地址
{
string nameseed = "ABCDE";
//给老师赋值
for (int i = 0; i < len; i++)
{
tarray[i].tname = "teacher_";
tarray[i].tname += nameseed[i]; //把两个string类型的数据相加,直接前后连接
for(int j=0;j<5;j++)
{
tarray[i].sarray[j].sname = "student_";
tarray[i].sarray[j].sname += nameseed[i]; //同理
int random = rand() % 61+40; //设立随机数0~60 -> 40~100
tarray[i].sarray[j].score = random;
}
}
}
//打印所有信息
void printinfo(struct tea tarray[], int len)
{
for (int i = 0; i < len; i++)
{
cout << "老师名字:" << tarray[i].tname << endl;
for (int j = 0; j < 5; j++) {
cout << "\t学生姓名:" << tarray[i].sarray[j].sname <<
"考试分数:"<< tarray[i].sarray[j].score<<
endl;
}
}
}
int main()
{
//随机数种子
srand((unsigned int)time(NULL));
//创建三名老师的数组
struct tea tarray[3];
//通过函数给三名老师的信息赋值,并给老师带的学生赋值
int len = sizeof(tarray)/sizeof(tarray[0]);
allocatesapce(tarray, len); //实参是一个数组名 是一个地址,上面的形参用tarray[]接受这个地址
//打印所有老师以及所带的学生信息
printinfo(tarray, len);
return 0;
}
注意两个函数的传参问题