先来说一下结构体的一些例子
包含创建结构体和初始化操作
#include<iostream> #include<string> using namespace std; struct user { char name[20]; char sex[5]; int age; }; struct student { string name; int age; int score; }stu;//第三种 int main() { struct user u1; strcpy_s(u1.name,"肥学"); u1.age = 12; strcpy_s(u1.sex,"男"); cout << "name:" << u1.name << "age:" << u1.age << "sex:" << u1.sex << endl; struct student s; s.name = "鸣人"; s.age = 20; s.score = 80; cout << "name:" <<s.name << " age:" << s.age << " sex:" << s.score << endl; struct student s2={ "pte",20,56 }; cout << "name:" << s2.name << " age:" << s2.age << " sex:" << s2.score << endl; struct user u2 = { "pter","男",20 }; cout << "name:" << u2.name << " age:" << u2.age << " sex:" << u2.sex << endl; }
结构体的的一些操作
#include<iostream> #include<string> using namespace std; struct friend{ string name; int age; string sex; }; struct user { string name; int age; string sex; struct friend f; }; void addfriend(user* u) { friend f = { "fei",20,"men" }; u->f = f; } void addf2(user& u) { friend f = { "xue",20,"men" }; u.f = f; } int main() { //结构体数组 /*user arru[5]; arru[0] = { "pter",20,"men" }; cout << arru[0].name << endl;*/ //结构体指针 /* user u = { "pter",20,"men" }; user *p = &u; cout << p->name << endl;*/ //嵌套结构体 /* user u; friend f = { "pter",20,"men" }; u = { "hello",20,"men",f }; cout << u.name << " " << u.f.name << endl;*/ //***结构体做函数的参数*** //地址传递 cout << "地址传递" << endl; user u = { "pter",20,"men" }; cout << "myname:" << u.name << " fname:" << u.f.name << endl; addfriend(&u); cout << "myname:" << u.name << " fname:" << u.f.name << endl; //引用传递 cout << "引用传递" << endl; user u2 = { "ppt",20,"men" }; cout << "myname:" << u2.name << " fname:" << u2.f.name << endl; addf2(u2); cout << "myname:" << u2.name << " fname:" << u2.f.name << endl; }
结构体的const
#include<iostream> #include<string> using namespace std; struct user { const string name;//感觉像java private const int age; const string sex; }; void printinfo(const user* u) { cout << u->name<<" " << u->age <<" " <<u->sex << endl; } int main() { user u = { "肥学",20,"男" }; printinfo(&u); }
案例练习
给每位老师分配几位学生
#include<iostream> #include<string> #include<ctime> using namespace std; typedef struct student { string name; int age; string sex; }s; typedef struct teacher { string name; int age; string sex; s sarray[5]; }t; void assignment(t* tarray,int len) { for (int i = 0; i < len; i++) { cout << "请输入老师姓名:" ; cin >> tarray[i].name; cout << "请输入年龄:"; cin >> tarray[i].age; cout << "请输入性别:"; cin >> tarray[i].sex; for (int s = 0; s < 2; s++) {//为了操作方便就输入两位学生信息 cout << "请输入学生姓名:"; cin >> tarray[i].sarray[s].name; //cout << "请输入学生年龄:"; //cin >> tarray[i].sarray[s].age; tarray[i].sarray[s].age = rand() % 18 + 8; cout << "请输入学生性别:"; cin >> tarray[i].sarray[s].sex; } } } void printinfo(t* tarray,int tnum) { cout << "信息展示:n" << endl; for (int i = 0; i < tnum; i++) { cout << "老师姓名:"<<tarray[i].name<<endl; for (int j = 0; j < 2; j++) { cout << " 学生姓名:" << tarray[i].sarray[j].name << endl; cout << " 学生姓名:" << tarray[i].sarray[j].age << endl; cout << " 学生姓名:" << tarray[i].sarray[j].sex << endl; } } } int main() { //随机种子 srand((unsigned int )time (null)); t tarray[3]; int tnum = sizeof(tarray) / sizeof(tarray[0]); assignment(tarray,tnum); printinfo(tarray, tnum); }
案例练习2
对每个员工的工资进赋值,然后对工资排序输出
#include<iostream> #include<string> #include<ctime> using namespace std; struct staff { string name; int salary; }; void initstaff(staff* sarray,int len) { string nameseed = "abcde"; for (int i = 0; i < len; i++) { int r = rand() % 10000 + 3000; string n = "user_"; string name = n + nameseed[i]; staff s = {name,r }; sarray[i] = s; } } void printinfo(staff* sarray, int len) { for (int i = 0; i < len; i++) { cout << "姓名:" << sarray[i].name << " 工资:" << sarray[i].salary << endl; } } void sortsalary(staff* sarray,int len) { for (int i = len-1; i >0; i--) { for (int j = len-1; j >= len-i; j--) { staff maxsalary; if (sarray[j].salary > sarray[j - 1].salary) { maxsalary = sarray[j]; sarray[j] = sarray[j - 1]; sarray[j - 1] = maxsalary; } } } } int main() { srand((unsigned int)time(null)); staff sarray[5]; int snum = (sizeof(sarray)) / sizeof(sarray[0]); initstaff(sarray, snum); printinfo(sarray, snum); sortsalary(sarray, snum); cout << "nn按工资排序后:n" << endl; printinfo(sarray, snum); }
到此这篇关于c++结构体案例练习分享的文章就介绍到这了,更多相关c++结构体内容请搜索<计算机技术网(www.ctvol.com)!!>以前的文章或继续浏览下面的相关文章希望大家以后多多支持<计算机技术网(www.ctvol.com)!!>!
需要了解更多c/c++开发分享C++结构体案例练习分享,都可以关注C/C++技术分享栏目—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/1081774.html