C++基础入门(11)

总结:如果不想修改主函数中的数据,用值传递,反之用地址传递
8.7 结构体中 const使用场景作用:用const来防止误操作
示例:
//学生结构体定义struct student{ //成员列表 string name;//姓名 int age;//年龄 int score;//分数};//const使用场景void printStudent(const student *stu) //加const防止函数体中的误操作{ //stu->age = 100; //操作失败,因为加了const修饰 cout << "姓名:" << stu->name << " 年龄:" << stu->age << " 分数:" << stu->score << endl;}int main() { student stu = { "张三",18,100 }; printStudent(&stu); system("pause"); return 0;}8.8 结构体案例8.8.1 案例1案例描述:
学校正在做毕设项目,每名老师带领5个学生,总共有3名老师,需求如下
设计学生和老师的结构体,其中在老师的结构体中,有老师姓名和一个存放5名学生的数组作为成员
学生的成员有姓名、考试分数,创建数组存放3名老师,通过函数给每个老师及所带的学生赋值
最终打印出老师数据以及老师所带的学生数据 。
示例:
struct Student{ string name; int score;};struct Teacher{ string name; Student sArray[5];};void allocateSpace(Teacher tArray[] , int len){ string tName = "教师"; string sName = "学生"; string nameSeed = "ABCDE"; for (int i = 0; i < len; i++) {tArray[i].name = tName + nameSeed[i];for (int j = 0; j < 5; j++){tArray[i].sArray[j].name = sName + nameSeed[j];tArray[i].sArray[j].score = rand() % 61 + 40;} }}void printTeachers(Teacher tArray[], int len){ for (int i = 0; i < len; i++) {cout << tArray[i].name << endl;for (int j = 0; j < 5; j++){cout << "t姓名:" << tArray[i].sArray[j].name << " 分数:" << tArray[i].sArray[j].score << endl;} }}int main() { srand((unsigned int)time(NULL)); //随机数种子 头文件 #include <ctime> Teacher tArray[3]; //老师数组 int len = sizeof(tArray) / sizeof(Teacher); allocateSpace(tArray, len); //创建数据 printTeachers(tArray, len); //打印数据system("pause"); return 0;}8.8.2 案例2案例描述:
设计一个英雄的结构体,包括成员姓名,年龄,性别;创建结构体数组,数组中存放5名英雄 。
通过冒泡排序的算法,将数组中的英雄按照年龄进行升序排序,最终打印排序后的结果 。
五名英雄信息如下:
{"刘备",23,"男"},{"关羽",22,"男"},{"张飞",20,"男"},{"赵云",21,"男"},{"貂蝉",19,"女"},示例:
//英雄结构体struct hero{ string name; int age; string sex;};//冒泡排序void bubbleSort(hero arr[] , int len){ for (int i = 0; i < len - 1; i++) {for (int j = 0; j < len - 1 - i; j++){if (arr[j].age > arr[j + 1].age){hero temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}} }}//打印数组void printHeros(hero arr[], int len){ for (int i = 0; i < len; i++) {cout << "姓名: " << arr[i].name << " 性别: " << arr[i].sex << " 年龄: " << arr[i].age << endl; }}int main() { struct hero arr[5] = {{"刘备",23,"男"},{"关羽",22,"男"},{"张飞",20,"男"},{"赵云",21,"男"},{"貂蝉",19,"女"}, }; int len = sizeof(arr) / sizeof(hero); //获取数组元素个数 bubbleSort(arr, len); //排序 printHeros(arr, len); //打印 system("pause"); return 0;}#




推荐阅读