结构体的嵌套问题

问题描述:学校正在做毕设,每名老师带领5个学生,共3名老师,设计老师和学生的结构体, 在老师的结构体中包含老师的姓名和存放5个学生的数组作为成员,学生的成员有姓名和考试分数,创建数组存放三名老师,通过函数给每个老师及所带的学生赋值。最终打印老师数据以及老师所带学生数据。

定义学生结构体

cpp 复制代码
struct Student//学生结构体的定义
{
	string sname;//学生名字
	int score;//学生分数
};

定义老师结构体

cpp 复制代码
struct Teacher //老师结构体定义
{
	string tname;//老师的名字
	struct Student sArray[5];//学生数组
};

创建函数给老师及老师所带学生信息赋值

cpp 复制代码
//创建函数给老师和学生赋值
void allocateSpace(struct Teacher tArray[], int len)
{
	srand((unsigned int)time(NULL));
	
	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 Score = rand() % 61 + 40;
			tArray[i].sArray[j].score = Score;
		}
		
	}
	

创建函数打印老师及所带学生信息

cpp 复制代码
//创建函数打印老师和所带学生信息
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;
		}
	}
}

Main函数

cpp 复制代码
int main()
{
	//1、创建三名老师的数组
	struct Teacher tArray[3];

	//2、通过函数给3名老师的信息赋值,以及给老师所带学生的信息赋值
	int len = sizeof(tArray) / sizeof(tArray[0]);
	allocateSpace(tArray, len);

	//3、通过函数打印所有老师以及所带学生的信息
	printInfo(tArray,len);

	system("pause");
	return 0;
}

总结

cpp 复制代码
#include<iostream>
#include<string>
#include<ctime>
using namespace std;

//结构体的嵌套

struct Student//学生结构体的定义
{
	string sname;//学生名字
	int score;//学生分数
};

struct Teacher //老师结构体定义
{
	string tname;//老师的名字
	struct Student sArray[5];//学生数组
};

//创建函数给老师和学生赋值
void allocateSpace(struct Teacher tArray[], int len)
{
	srand((unsigned int)time(NULL));
	
	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 Score = rand() % 61 + 40;
			tArray[i].sArray[j].score = Score;
		}
		
	}
	
}

//创建函数打印老师和所带学生信息
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、创建三名老师的数组
	struct Teacher tArray[3];

	//2、通过函数给3名老师的信息赋值,以及给老师所带学生的信息赋值
	int len = sizeof(tArray) / sizeof(tArray[0]);
	allocateSpace(tArray, len);

	//3、通过函数打印所有老师以及所带学生的信息
	printInfo(tArray,len);

	system("pause");
	return 0;
}
相关推荐
potato_may5 分钟前
CC++ 内存管理 —— 程序的“五脏六腑”在哪里?
c语言·开发语言·数据结构·c++·内存·内存管理
饕餮怪程序猿13 分钟前
A*算法(C++实现)
开发语言·c++·算法
ULTRA??1 小时前
C/C++函数指针
c语言·开发语言·c++
还没想好取啥名1 小时前
C++11新特性(一)——自动类型推导
开发语言·c++·stl
我是华为OD~HR~栗栗呀1 小时前
华为OD-C面经-23届学院哦
java·c++·python·华为od·华为·面试
西贝爱学习1 小时前
Visual Studio下载地址,vs2022安装程序
c++
天赐学c语言1 小时前
12.5 - 二叉树的最近公共祖先 && 构造函数和析构函数可以是虚函数吗
c++·二叉树·虚函数
闻缺陷则喜何志丹1 小时前
【计算几何】P2785 物理1(phsic1)- 磁通量|普及+
c++·数学·计算几何
郝学胜-神的一滴1 小时前
Linux定时器编程:深入理解setitimer函数
linux·服务器·开发语言·c++·程序人生
小鱼小鱼.oO2 小时前
C++ 算法基础知识
c++·算法·哈希算法