1、学校在做毕设项目,每名老师带领5个学生,总共三名老师,需求如下:
设计学生和老师结构体,其中在老师的结构体中,有老师姓名和一个存放5名学生的数组作为成员。学生的成员有姓名、考试分数,创建数组存放三位老师,通过函数给每个老师及所带学生赋值并最终打印出老师数据以及老师所带学生数据。
方法步骤:1、构建程序基本框架
#include<iostream>
using namespace std;
#include<string>
int main()
{
system("pause");
return 0;
}
2、创建老师,学生结构体。由于学生结构体作为老师结构体的成员,所以涉及结构体嵌套知识,所以先创建学生结构体,再创建老师结构体。注意老师结构体成员嵌套的是学生结构体数组,直接写成定义数组的形式。
#include<iostream>
using namespace std;
#include<string>
struct student
{
string name;
int score;
};
struct teacher
{
string name;
student stu_array[5];
};
int main()
{
system("pause");
return 0;
}
3、初始化结构体变量
#include<iostream>
using namespace std;
#include<string>
struct student
{
string name;
int score;
};
struct teacher
{
string name;
student stu_array[5];
};
int main()
{
teacher teach_array[3] = { {"张三",{{ "小李",70},{ "小王",60},{ "小张",90},{ "小胡",100},{ "小谢",77} }},
{"李四",{{ "小一",70},{ "小而",60},{ "小三",90},{ "小四",100},{ "小五",77} }},
{"王五",{{ "小名",70},{ "小明",60},{ "小红",90},{ "小晓",100},{ "小强",77} }},
};
}
4、定义打印函数,利用for循环进行打印
#include<iostream>
using namespace std;
#include<string>
struct student
{
string name;
int score;
};
struct teacher
{
string name;
student stu_array[5];
};
void printfunction(teacher tech_array[3])
{
for (int i = 0; i < 3; i++)
{
cout << tech_array[i].name << "老师的学生信息:" << endl;
for (int j = 0;j < 5; j++)
{
cout << tech_array[i].stu_array[j].name << " " << tech_array[i].stu_array[j].score << endl;
}
}
}
int main()
{
teacher teach_array[3] = { {"张三",{{ "小李",70},{ "小王",60},{ "小张",90},{ "小胡",100},{ "小谢",77} }},
{"李四",{{ "小一",70},{ "小而",60},{ "小三",90},{ "小四",100},{ "小五",77} }},
{"王五",{{ "小名",70},{ "小明",60},{ "小红",90},{ "小晓",100},{ "小强",77} }},
};
printfunction(teach_array);
}
结构体数组传入函数中,将结构体数组名传入。printfunction(teach_array);
2、设计一个英雄的结构体,包括成员姓名,年龄,性别。创建结构体数组,数组中存放5名英雄,通过冒泡排序算法,将数组中的英雄按年龄进行排序,最终打印排序结果如下:
#include<iostream>
using namespace std;
#include<string>
//1、创建英雄结构体数组
struct hero {
string name;
int age;
string sex;
};
void bubblesort( hero hero_a[],int len)
{
for (int i = 0; i < len-1; i++)
{
for (int j = 0; j < len - 1 - i; j++)
{
if (hero_a[j].age < hero_a[j + 1].age)
{
hero temp = hero_a[j];
hero_a[j] = hero_a[j + 1];
hero_a[j + 1] = temp;
}
}
}
for (int k = 0; k < len; k++)
{
cout << "{" << hero_a[k].name << "," << hero_a[k].age << "," << hero_a[k].sex << "}" << endl;
}
}
int main()
{
struct hero hero_array[5] = { {"刘备",25,"男"},{"张飞",29,"男"},{"妲己",18,"女"},{"貂蝉",19,"女"},{"赵云",23,"男"} };
int len = sizeof(hero_array) / sizeof(hero_array[0]);
bubblesort(hero_array,len);
}
这里的实参是改变了的,因为传入的是数组名,数组名不是数值是地址。