应用案例 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 男