C++结构体应用小案例:包括 随机数种子,利用sizeof关系式动态设置数组长度len的小技巧,以及数组作为函数参数的传递时形参表示方法的细节

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;

}


版权声明:本文为weixin_53730909原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。