C++数组及结构体应用学习-小程序1and2

实现实例1

/*
C++结构体实例1:
学校正在做毕设项目,每名老师带领5个学生,总共有3名老师,需求如下:
设计学生和老师的结构体,其中在老师的结构体中,有老师姓名和一个存放5名学生的数组作为成员。
学生的成员有姓名、考试分数。创建数组存放3名老师,通过函数给每个老师及所带的学生赋值。
最终打印出老师数据以及老师所带的学生数据。
*/
#include<iostream>
#include<string>
using namespace std;

//创建学生的结构体类型
struct student1{
	string name;
	int score;
};
//创建老师的结构体类型
struct teacher1{
	string t_name;
	struct student1 s[5];
};

//赋值函数
void Set_TT(teacher1 *t1) {
	//int len=sizeof(t1)/sizeof(teacher1);
	int len = 3;
	for (int i = 0; i < len; i++) {
		cout << "请输入第" << i << "位老师的名字" << endl;
		cin >>t1[i].t_name;//此处用数组索引指明了是第一个结构体元素,因此后续用符号“.”
		for (int j = 0; j < 5; j++) {
			cout << "请输入第" << j << "位同学的名字及分数" << endl;
			cin >>t1[i].s[j].name>>t1[i].s[j].score;
		}
	}

}
//打印信息函数
void PrintT(teacher1 *t2) {
	//int len2 = sizeof(t2) / sizeof(teacher1);
	int len2 = 3;
	for (int i = 0; i < len2; i++) {
		cout << t2->t_name << endl;//此处t2为数组名,退化为指针使用。也可以像t1一样使用。
		for (int j = 0; j < 5; j++) {
			cout << t2->s[j].name << " "<< t2->s[j].score<<endl;
		}
	}
}

int main(){
	teacher1 tea1[3];
	Set_TT(tea1);
    PrintT(tea1);

	system("pause");
	return 0;

}

实现实例2

/*
设计一个英雄的结构体,包括成员姓名,年龄,性别;创建结构体数组,数组中存放5名英雄。
通过冒泡排序的算法,将数组中的英雄按照年龄进行升序排序,最终打印排序后的结果。
五名英雄信息如下:
		{"刘备",23,"男"},
		{"关羽",22,"男"},
		{"张飞",20,"男"},
		{"赵云",21,"男"},
		{"貂蝉",19,"女"}。
*/
#include<iostream>
#include<string>
using namespace std;

//创建英雄结构体
struct hero {
	string name;
	int age;
	string gender;
};

//冒泡排序
void sort(hero *heros,int len) {
	//int len=sizeof(heros)/sizeof(hero);
	int max = 0;
	for (int i = 0; i < len-1;i++) {
		for (int j = 0; j < len - i-1; j++) {
			//年龄作为结构体变量排序的依据
			if (heros[j].age >= heros[j+1].age) {//由于要对整个结构体数组重新排序,仅仅交换年龄是做不到的,实际上是要交换整个结构体变量。
				hero max = heros[j];//定义一个结构体变量中间量用于存储年龄较大的整个结构体变量
				heros[j] = heros[j + 1];
				heros[j+1] = max;
			}
		}
	}
}
//打印排序后的结果:
void print_h(hero *heros1,int len) {
	//int len1 = sizeof(heros1) / sizeof(hero);
	for (int i = 0; i < len; i++) {
		cout<<"{"<<heros1[i].name<<","<<heros1[i].age<<","<<heros1[i].gender<<"}"<<endl;
	}
}

int main() {
	hero fiveh[5] = {{"刘备",23,"男"},{"关羽",22,"男"},{"张飞",20,"男"},{"赵云",21,"男"},{"貂蝉",19,"女"}};
	int len = sizeof(fiveh) / sizeof(hero);//为了计算结构体数组的元素个数。
	sort(fiveh,len);
	print_h(fiveh,len);
	
	system("pause");
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值