C++学习note9(应用案例2则:结构体)

应用案例 1

每个老师带五个学生,共三个老师,定义老师和学生的结构体,老师的结构体中,有老师姓名和一个存放为五个学生的数组。学生的成员有姓名,分数。创建数组存放三名老师,通过函数给每个老师及所带学生赋值,最后打印出来。

#include<iostream>
using namespace std;
#include<string>
#include<ctime>

struct student2{
	string sname;
	int score;
};
struct teacher2{
	string tname;
	struct student2 s[5];
};
void give(struct teacher2 t[],int len){
	string nameSeed="ABCDE";
	for(int i=0;i<len;i++){
		t[i].tname="teacher_";
		t[i].tname+=nameSeed[i];
		for(int j=0;j<5;j++){
			t[i].s[j].sname="student_";
			t[i].s[j].sname+=nameSeed[j];

			int random=rand()%61+40;
			t[i].s[j].score=random;
    }
  }
}
void print(struct teacher2 t[],int len){
	for(int i=0;i<len;i++){
		cout<<"老师姓名:"<<t[i].tname<<endl;
		for(int j=0;j<5;j++){
			cout<<"\t学生姓名:"<<t[i].s[j].sname<<"\t学生分数:"<<t[i].s[j].score<<endl;
		}
	}
}

int main(){
	srand((unsigned int)time(NULL));

	struct teacher2 t[3];
	int len=sizeof(t)/sizeof(t[0]);
	give(t,len);
	print(t,len);

	system("pause");
	return 0;
}
老师姓名:teacher_A
        学生姓名:student_A      学生分数:43
        学生姓名:student_B      学生分数:56
        学生姓名:student_C      学生分数:67
        学生姓名:student_D      学生分数:65
        学生姓名:student_E      学生分数:78
老师姓名:teacher_B
        学生姓名:student_A      学生分数:41
        学生姓名:student_B      学生分数:82
        学生姓名:student_C      学生分数:92
        学生姓名:student_D      学生分数:51
        学生姓名:student_E      学生分数:87
老师姓名:teacher_C
        学生姓名:student_A      学生分数:80
        学生姓名:student_B      学生分数:54
        学生姓名:student_C      学生分数:90
        学生姓名:student_D      学生分数:83
        学生姓名:student_E      学生分数:82

应用案例 2  

设计一个英雄结构体,成员包括姓名,年龄,性别,创建结构体数组,数组中存放5名英雄,通过冒泡排序实现升序排列,最终打印排序后的结果.

{“刘备”,23,“男”}

{“关羽”,22,“男”}

{“张飞”,20,“男”}

{“赵云”,21,“男”}

{“貂蝉”,19,”女“}

#include<iostream>
using namespace std;
#include<string>

struct hero{
	string name;
	int age;
	string sex;
};
void order(struct hero h[],int len){
	for(int i=0;i<len-1;i++){
		for(int j=0;j<len-1-i;j++){
		if(h[j].age>h[j+1].age){
			struct hero temp[5];    /创建一个相同类型的结构体数组用来接收
			temp[j]=h[j];    
			h[j]=h[j+1];
			h[j+1]=temp[j];

		}
	}
  }
	for(int i=0;i<5;i++){
		cout<<h[i].name<<"\t"<<h[i].age<<"\t"<<h[i].sex<<endl;
	}
}

int main(){
	struct hero h[5]={
		{"刘备",23,"男"},
		{"关羽",22,"男"},
		{"张飞",20,"男"},
		{"赵云",21,"男"},
		{"貂蝉",19,"女"},
};
	for(int i=0;i<5;i++){
	cout<<h[i].name<<"\t"<<h[i].age<<"\t"<<h[i].sex<<endl;
	}
	cout<<"按年龄升序排列后:"<<endl;
	int len=sizeof(h)/sizeof(h[0]);
	order(h,len);

	system("pause");
	return 0;
}
刘备    23      男
关羽    22      男
张飞    20      男
赵云    21      男
貂蝉    19      女
按年龄升序排列后:
貂蝉    19      女
张飞    20      男
赵云    21      男
关羽    22      男
刘备    23      男

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值