1.每名老师带5名学生,共三名老师,需求如下:
设计学生和老师的结构体,老师结构体中有:老师姓名,存放5名学生的结构体数组
作为成员的学生有姓名 分数 ,创建数组存放三名老师,通过函数给每个老师及所带
的学生赋值,最终打印老师数据和老师所带学生的数据。
#include <iostream>
#include <string>
#include <ctime>
using namespace std;
struct student {
int score;
string sname;
};
struct teacher {
string tname;
student arrStu[5];
};
void printInfo(teacher tarr[],int len)
{
for (int i = 0; i < len; i++)
{
cout << "老师姓名: " << tarr[i].tname << endl;
for (int j = 0; j < 5; j++)
{
cout << "\t学生姓名: " << tarr[i].arrStu[j].sname
<< "考试分数: "<<tarr[i].arrStu[j].score <<endl;
}
}
}
void allocateSpace(teacher tarr[],intlen)
{
string nameSeed = "ABCDE";
for (int i = 0; i < len; i++)
{
tarr[i].tname = "Teacher_";
tarr[i].tname += nameSeed[i];//非常重要的动态关联技巧
//给这名老师的五名学生赋值
for (int j = 0; j < 5; j++)
{
tarr[i].arrStu[j].sname="Student_";
tarr[i].arrStu[j].sname += nameSeed[j];
int random = rand() % 61+40;
tarr[i].arrStu[j].score = random;
}
}
}
int main()
{
//随机数种子
srand((unsigned)time(NULL));
//创建三名老师的数组
teacher tarr[3];
//通过函数给3名老师赋值
int len = sizeof(tarr) / sizeof(tarr[0]);//非常重要的动态关联技巧
allocateSpace(tarr, len);
//打印所有老师即学生的信息
printInfo(tarr,len);
system("pause");
return 0;
}
2.将结构体数组中的元素按年龄使用冒泡算法升序排序
#include <iostream>
#include<string>
using namespace std;
struct hero {
string name;
int age;
string sex;
};
void bubbleSort(hero heroArr[], int len)//等价于hero* heroarr!!!
{
for (int i = 0; i < len - 1; i++)
{
for (int j = 0; j < len - i - 1; j++)
{
if (heroArr[j].age > heroArr[j + 1].age)
{
hero temp = heroArr[j + 1];
heroArr[j+1] = heroArr[j];
heroArr[j] = temp;
}
}
}
}
void printHero(hero heroArr[], int len)
{
for (int i = 0; i < len; i++)
{
cout << "姓名: " << heroArr[i].name << "年龄: " << heroArr[i].age << "性别: " << heroArr[i].sex << endl;
}
}
int main()
{
hero heroArr[5] = {
{"刘备",23,"男"},
{"关羽",22,"男"},
{"张飞",20,"男"},
{"赵云",21,"男"},
{"貂蝉",19,"女"}
};
int len = sizeof(heroArr) / sizeof(heroArr[0]);
bubbleSort(heroArr,len );//???
printHero(heroArr, len);
system("pause");
return 0;
}