C++ 初学结构体小案例~老师带学生

题设:设计学生和老师的结构体,其中在老师的结构体中,有老师姓名和一个存放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));

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: "Think in C"是Bruce Eckel所著的一本关于C语言程序设计的书籍,它在C语言的程序开发和设计中不仅提供了一种方法,同时也阐述了C语言的一些基本概念和重要的编程思想。 本书首先探讨了C语言基本的数据类型、运算符、控制流程和函数等概念,以帮助读者建立起正确的编程思维方式。同时,本书还讲述了C语言在面向对象编程方面的优势,以及如何利用结构体和指针等特性来编写高效的程序。 此外,“Think in C” 还重点讲述了内存管理和调试技术等内容,这些技术的掌握对于提高程序质量和效率非常重要。这本书的优点在于在介绍C语言的同时,它强调了一些重要的编程思想和方法论,让读者能够真正理解并掌握编程的本质,不仅仅是一门语言,而是一种智力的表达方式。 例如,本书在讲述指针和内存管理时,强调了C语言的高可用性,并提供了一些常用的调试技术,如GDB等。这不仅有助于防止程序出现内存泄漏等问题,还可帮助读者尽早发现并解决一些潜在的问题,提高程序的鲁棒性和可维护性。总之,“Think in C” 是一本非常不错的C语言编程指南,无论初学者或者已经有一定经验的开发者都值得阅读。 ### 回答2: 《Think in C》是一本深入讲解C++语言特性和编程思想的教材。该书分为两卷,包括指针、数组、类、继承、多态等C++语言核心概念以及面向对象程序设计的方法和技巧。 该书以实例为主线,通过讲解实际的代码,帮助读者理解C++的语法和设计思想。良好的组织结构、全面的知识点覆盖,以及许多实际案例的讲解,使读者深入了解了C++语言的特性和使用方法。 本书重点突出了模板、异常和标准模板库(STL)等后现代C++特性。此外,书中还对如何编写高质量的C++代码进行了详细的介绍,包括如何使用C++特性以及如何避免C++中常见的陷阱和错误,对于提升代码质量有较大的帮助。 总之,《Think in C》是一本非常适合深入学习C++语言的教材。它不但全面深入地讲解了语法和特性,同时还传授了良好的编程思想和习惯,是非常值得一读的经典教材。 ### 回答3: 《Thinking in C++》是一本面向C++程序员的优秀教材,也是学习C++语言的经典之作。其中的内容深度浅出,通俗易懂,不仅让初学者初步掌握C++编程语言的核心概念,也为有经验的C++开发者提供了许多对程序设计思路的启迪。 书中以C++为中心,讲述了大量的、复杂的编程理论和实践的基础,其中包括面向对象、数据结构、内存分配等细节,还涉及到不同平台的编程规则和编码习惯等方面,让读者能够真正掌握C++语言。 “Think in C++”切实地贯彻了“学与教合一”的原则,注重知识的传递和实践,经过实践测试,并供给了丰富的练习来提高读者对理论的掌握和实践技能的锤炼。 总之,读完《Thinking in C++》之后,在C++编程语言上,你就已经具备了成为高级程序员的基本要求。它是一本逐步提升自己思维习惯和编程水平的必备读物。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值