题设:设计学生和老师的结构体,其中在老师的结构体中,有老师姓名和一个存放5名学生的数组作为成员
学生的成员有姓名、考试分数,创建数组存放3名老师,通过函数给每个老师及所带的学生赋值
最终打印出老师数据以及老师所带的学生数据。
代码实现:
#include<iostream>
using namespace std;
//创建学生结构体
struct Student {
string sName;
int score;
};
//创建老师结构体
struct Teacher {
string tName;
Student sArray[5];
};
void allocateSpace(struct Teacher tArray[],int len) {
string nameSeed = "ABCDE";
//给老师赋值
for (int i = 0; i < len; i++) {
tArray[i].tName = "Teacher_";
tArray[i].tName += nameSeed[i];
for (int j = 0; j < 5; j++)
{
tArray[i].sArray[j].sName = "Student+_";
tArray[i].sArray[j].sName += nameSeed[j];
tArray[i].sArray[j].score = 60;
}
}
}
void printInfo(struct Teacher 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() {
//1.创建3名老师的数组
struct Teacher tArray[3];
//通过函数给3名老师的信息赋值。并给老师带的学生信息赋值
int len = sizeof(tArray) / sizeof(tArray[0]);
allocateSpace(tArray,len);
//打印所有信息
printInfo(tArray, len);
system("pause");
return 0;
}
结果:
老师姓名:Teacher_A
学生姓名:Student+_A 考试分数:60
学生姓名:Student+_B 考试分数:60
学生姓名:Student+_C 考试分数:60
学生姓名:Student+_D 考试分数:60
学生姓名:Student+_E 考试分数:60
老师姓名:Teacher_B
学生姓名:Student+_A 考试分数:60
学生姓名:Student+_B 考试分数:60
学生姓名:Student+_C 考试分数:60
学生姓名:Student+_D 考试分数:60
学生姓名:Student+_E 考试分数:60
老师姓名:Teacher_C
学生姓名:Student+_A 考试分数:60
学生姓名:Student+_B 考试分数:60
学生姓名:Student+_C 考试分数:60
学生姓名:Student+_D 考试分数:60
学生姓名:Student+_E 考试分数:60
请按任意键继续. . .
此时分数为都为60 ,我们添加随机种子之后就会变化,如下:
#include<iostream>
using namespace std;
#include<ctime>
//创建学生结构体
struct Student {
string sName;
int score;
};
//创建老师结构体
struct Teacher {
string tName;
Student sArray[5];
};
void allocateSpace(struct Teacher tArray[],int len) {
string nameSeed = "ABCDE";
//给老师赋值
for (int i = 0; i < len; i++) {
tArray[i].tName = "Teacher_";
tArray[i].tName += nameSeed[i];
for (int j = 0; j < 5; j++)
{
tArray[i].sArray[j].sName = "Student+_";
tArray[i].sArray[j].sName += nameSeed[j];
int random = rand() % 61 + 40; //40~100
tArray[i].sArray[j].score = random;
}
}
}
void printInfo(struct Teacher 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));
//1.创建3名老师的数组
struct Teacher tArray[3];
//通过函数给3名老师的信息赋值。并给老师带的学生信息赋值
int len = sizeof(tArray) / sizeof(tArray[0]);
allocateSpace(tArray,len);
//打印所有信息
printInfo(tArray, len);
system("pause");
return 0;
}
结果:(注意分数变化)
老师姓名:Teacher_A
学生姓名:Student+_A 考试分数:73
学生姓名:Student+_B 考试分数:69
学生姓名:Student+_C 考试分数:68
学生姓名:Student+_D 考试分数:42
学生姓名:Student+_E 考试分数:88
老师姓名:Teacher_B
学生姓名:Student+_A 考试分数:44
学生姓名:Student+_B 考试分数:81
学生姓名:Student+_C 考试分数:40
学生姓名:Student+_D 考试分数:58
学生姓名:Student+_E 考试分数:73
老师姓名:Teacher_C
学生姓名:Student+_A 考试分数:57
学生姓名:Student+_B 考试分数:77
学生姓名:Student+_C 考试分数:73
学生姓名:Student+_D 考试分数:93
学生姓名:Student+_E 考试分数:53
请按任意键继续. . .
注意知识点:
1. rand()%60;是会生成0~59的随机数。rand()%60+40;会生成40~99的随机数,所以本代码中为了满足随机区间在40~100之间,改为rand()%61+40;
2. 随机种子:srand((unsigned int)time(NULL));