C++結(jié)構(gòu)體數(shù)組詳細(xì)解析
1.定義結(jié)構(gòu)體數(shù)組
和定義結(jié)構(gòu)體變量類(lèi)似,定義結(jié)構(gòu)體數(shù)組時(shí)只需聲明其為數(shù)組即可。如:
struct Student{
int num;
char name[20];
char sex[5];
int age;
float score;
char addr[30];
};
Student stu[3]; //定義Student類(lèi)型的數(shù)組stu
2.結(jié)構(gòu)體數(shù)組的應(yīng)用舉例
題目:對(duì)候選人的票的統(tǒng)計(jì)程序。
設(shè)有3個(gè)候選人,最終只能有一個(gè)當(dāng)選為領(lǐng)導(dǎo)。今有10個(gè)人參加投票,從鍵盤(pán)先后輸入這10個(gè)人所投的候選人的名字,要求最后能輸出這3個(gè)候選人的的票結(jié)果。
#include<iostream>
using namespace std;
struct Person{
char name[20]; //姓名
int count; //票數(shù)計(jì)數(shù)器
};
int main(){
Person leader[3]={"Tom",0,"Neo",0,"Marry",0};
//定義Person類(lèi)型的數(shù)組,內(nèi)容為3個(gè)候選人的姓名和票數(shù)
int i,j,k=0;
bool tag;
cout<<"please input the name of the leader : Tom Neo Marry\n\n";
char leadername[20]; //該數(shù)組為每次輸入的候選人的名字
for(i=0;i<10;i++){ //循環(huán)輸入這10個(gè)人選的候選人的名字
cout<<"input name "<<i+1<<" :";
cin>>leadername;
tag=1;
for(j=0;j<3;j++){
if(strcmp(leadername,leader[j].name)==0){
leader[j].count++;
tag=0;
}
}
if(tag==1)k++;
}
cout<<endl;
for(i=0;i<3;i++){
cout<<leader[i].name<<":"<<leader[i].count<<endl;
}
cout<<"Abandoned tickets:"<<k<<endl;
return 0;
}

當(dāng)然,如果不使用結(jié)構(gòu)體也可以解決這個(gè)問(wèn)題:
#include<iostream>
#include<string>
using namespace std;
int main(){
char *name[3]={"Tom","Neo","Marry"};
int count[3]={0,0,0};
int i,j,k=0;
bool tag=1;
cout<<"please input the name of the leader : Tom Neo Marry\n\n";
char leadername[20];
for(i=0;i<10;i++){
cout<<"input name "<<i+1<<" :";
cin>>leadername;
for(j=0;j<3;j++){
if(strcmp(leadername,name[j])==0){
count[j]++;
tag=0;
}
}
if(tag==1)k++;
tag=1;
}
cout<<endl;
for(i=0;i<3;i++){
cout<<name[i]<<":"<<count[i]<<endl;
}
cout<<"Abandoned tickets:"<<k<<endl;
return 0;
}
或者
#include<iostream>
#include<string>
using namespace std;
int main(){
string name[3]={"Tom","Neo","Marry"};
int count[3]={0,0,0};
int i,j,k=0;
bool tag=1;
cout<<"please input the name of the leader : Tom Neo Marry\n\n";
string leadername;
for(i=0;i<10;i++){
cout<<"input name "<<i+1<<" :";
cin>>leadername;
for(j=0;j<3;j++){
if(leadername==name[j]){
count[j]++;
tag=0;
}
}
if(tag==1)k++;
tag=1;
}
cout<<endl;
for(i=0;i<3;i++){
cout<<name[i]<<":"<<count[i]<<endl;
}
cout<<"Abandoned tickets:"<<k<<endl;
return 0;
}
但是,相比較使用結(jié)構(gòu)體的方法,我們對(duì)于候選人和票數(shù)的關(guān)系,更加直觀,聯(lián)系更加明顯。
- C語(yǔ)言利用結(jié)構(gòu)體數(shù)組實(shí)現(xiàn)學(xué)生成績(jī)管理系統(tǒng)
- 基于C#調(diào)用c++Dll結(jié)構(gòu)體數(shù)組指針的問(wèn)題詳解
- C#中結(jié)構(gòu)體定義并轉(zhuǎn)換字節(jié)數(shù)組詳解
- C#調(diào)用C++DLL傳遞結(jié)構(gòu)體數(shù)組的終極解決方案
- C語(yǔ)言 結(jié)構(gòu)體數(shù)組詳解及示例代碼
- 詳解C++中的指針結(jié)構(gòu)體數(shù)組以及指向結(jié)構(gòu)體變量的指針
- C#中結(jié)構(gòu)體和字節(jié)數(shù)組轉(zhuǎn)換實(shí)現(xiàn)
- C++基礎(chǔ)入門(mén)教程(三):數(shù)組、字符串、結(jié)構(gòu)體、共用體
- C語(yǔ)言結(jié)構(gòu)體數(shù)組同時(shí)賦值的另類(lèi)用法
相關(guān)文章
QT實(shí)戰(zhàn)之實(shí)現(xiàn)圖片瀏覽系統(tǒng)
這篇文章主要介紹了如何利用QT編寫(xiě)一個(gè)圖片瀏覽系統(tǒng),可以支持自動(dòng)播放,左右拖動(dòng)切換,點(diǎn)擊列表切換,點(diǎn)擊按鈕切換等功能,感興趣的小伙伴可以跟隨小編一起了解一下2023-04-04c語(yǔ)言單詞本的新增、刪除、查詢(xún)按順序顯示功能
這篇文章主要介紹了c語(yǔ)言單詞本的新增、刪除、查詢(xún)按順序顯示功能,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-12-12OpenCV獲取圖像中直線上的數(shù)據(jù)具體流程
對(duì)圖像進(jìn)行處理時(shí),經(jīng)常會(huì)有這類(lèi)需求:客戶(hù)想要提取出圖像中某條直線或者ROI區(qū)域內(nèi)的感興趣數(shù)據(jù),進(jìn)行重點(diǎn)關(guān)注,怎么操作呢,下面小編通過(guò)實(shí)例代碼介紹下OpenCV獲取圖像中直線上的數(shù)據(jù),一起看看吧2021-11-11C++寬字符與普通字符的轉(zhuǎn)換實(shí)例詳解
這篇文章主要介紹了C++寬字符與普通字符的轉(zhuǎn)換實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下2017-06-06C++數(shù)據(jù)結(jié)構(gòu)之list詳解
list是一種序列式容器。list容器完成的功能實(shí)際上和數(shù)據(jù)結(jié)構(gòu)中的雙向鏈表是極其相似的,list中的數(shù)據(jù)元素是通過(guò)鏈表指針串連成邏輯意義上的線性表,也就是list也具有鏈表的主要優(yōu)點(diǎn),即:在鏈表的任一位置進(jìn)行元素的插入、刪除操作都是快速的2021-11-11