C++結(jié)構(gòu)體案例練習(xí)分享
先來說一下結(jié)構(gòu)體的一些例子
包含創(chuàng)建結(jié)構(gòu)體和初始化操作
#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,"肥學(xué)");
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;
}
結(jié)構(gòu)體的的一些操作
#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() {
//結(jié)構(gòu)體數(shù)組
/*User arru[5];
arru[0] = { "pter",20,"men" };
cout << arru[0].name << endl;*/
//結(jié)構(gòu)體指針
/*
User u = { "pter",20,"men" };
User *p = &u;
cout << p->name << endl;*/
//嵌套結(jié)構(gòu)體
/*
User u;
Friend f = { "pter",20,"men" };
u = { "hello",20,"men",f };
cout << u.name << " " << u.f.name << endl;*/
//***結(jié)構(gòu)體做函數(shù)的參數(shù)***
//地址傳遞
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;
}
結(jié)構(gòu)體的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 = { "肥學(xué)",20,"男" };
printInfo(&u);
}
案例練習(xí)
給每位老師分配幾位學(xué)生
#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++) {//為了操作方便就輸入兩位學(xué)生信息
cout << "請輸入學(xué)生姓名:";
cin >> tarray[i].sarray[s].name;
//cout << "請輸入學(xué)生年齡:";
//cin >> tarray[i].sarray[s].age;
tarray[i].sarray[s].age = rand() % 18 + 8;
cout << "請輸入學(xué)生性別:";
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 << " 學(xué)生姓名:" << tarray[i].sarray[j].name << endl;
cout << " 學(xué)生姓名:" << tarray[i].sarray[j].age << endl;
cout << " 學(xué)生姓名:" << 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);
}
案例練習(xí)2
對每個員工的工資進(jìn)賦值,然后對工資排序輸出
#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 << "\n\n按工資排序后:\n" << endl;
printInfo(sarray, snum);
}
到此這篇關(guān)于C++結(jié)構(gòu)體案例練習(xí)分享的文章就介紹到這了,更多相關(guān)C++結(jié)構(gòu)體內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C++?STL標(biāo)準(zhǔn)庫之std::list使用介紹及用法詳解
std::list是支持常數(shù)時間從容器任何位置插入和移除元素的容器,下面這篇文章主要給大家介紹了關(guān)于C++?STL標(biāo)準(zhǔn)庫之std::list使用介紹及用法詳解的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-11-11
VS2022 CUDA環(huán)境配置的實現(xiàn)步驟
本文主要介紹了VS2022 CUDA環(huán)境配置的實現(xiàn)步驟,文中通過圖文示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-05-05
C++實現(xiàn)LeetCode(26.有序數(shù)組中去除重復(fù)項)
這篇文章主要介紹了C++實現(xiàn)LeetCode(26.有序數(shù)組中去除重復(fù)項),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07

