<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
先來說一下結構體的一些例子
包含建立結構體和初始化操作
#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++結構體內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45