C++結(jié)構(gòu)體數(shù)組詳細(xì)解析
1.定義結(jié)構(gòu)體數(shù)組
和定義結(jié)構(gòu)體變量類似,定義結(jié)構(gòu)體數(shù)組時只需聲明其為數(shù)組即可。如:
struct Student{
int num;
char name[20];
char sex[5];
int age;
float score;
char addr[30];
};
Student stu[3]; //定義Student類型的數(shù)組stu
2.結(jié)構(gòu)體數(shù)組的應(yīng)用舉例
題目:對候選人的票的統(tǒng)計程序。
設(shè)有3個候選人,最終只能有一個當(dāng)選為領(lǐng)導(dǎo)。今有10個人參加投票,從鍵盤先后輸入這10個人所投的候選人的名字,要求最后能輸出這3個候選人的的票結(jié)果。
#include<iostream>
using namespace std;
struct Person{
char name[20]; //姓名
int count; //票數(shù)計數(shù)器
};
int main(){
Person leader[3]={"Tom",0,"Neo",0,"Marry",0};
//定義Person類型的數(shù)組,內(nèi)容為3個候選人的姓名和票數(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個人選的候選人的名字
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)體也可以解決這個問題:
#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)體的方法,我們對于候選人和票數(shù)的關(guān)系,更加直觀,聯(lián)系更加明顯。
- C語言利用結(jié)構(gòu)體數(shù)組實現(xiàn)學(xué)生成績管理系統(tǒng)
- 基于C#調(diào)用c++Dll結(jié)構(gòu)體數(shù)組指針的問題詳解
- C#中結(jié)構(gòu)體定義并轉(zhuǎn)換字節(jié)數(shù)組詳解
- C#調(diào)用C++DLL傳遞結(jié)構(gòu)體數(shù)組的終極解決方案
- C語言 結(jié)構(gòu)體數(shù)組詳解及示例代碼
- 詳解C++中的指針結(jié)構(gòu)體數(shù)組以及指向結(jié)構(gòu)體變量的指針
- C#中結(jié)構(gòu)體和字節(jié)數(shù)組轉(zhuǎn)換實現(xiàn)
- C++基礎(chǔ)入門教程(三):數(shù)組、字符串、結(jié)構(gòu)體、共用體
- C語言結(jié)構(gòu)體數(shù)組同時賦值的另類用法
相關(guān)文章
QT實戰(zhàn)之實現(xiàn)圖片瀏覽系統(tǒng)
這篇文章主要介紹了如何利用QT編寫一個圖片瀏覽系統(tǒng),可以支持自動播放,左右拖動切換,點擊列表切換,點擊按鈕切換等功能,感興趣的小伙伴可以跟隨小編一起了解一下2023-04-04OpenCV獲取圖像中直線上的數(shù)據(jù)具體流程
對圖像進(jìn)行處理時,經(jīng)常會有這類需求:客戶想要提取出圖像中某條直線或者ROI區(qū)域內(nèi)的感興趣數(shù)據(jù),進(jìn)行重點關(guān)注,怎么操作呢,下面小編通過實例代碼介紹下OpenCV獲取圖像中直線上的數(shù)據(jù),一起看看吧2021-11-11C++數(shù)據(jù)結(jié)構(gòu)之list詳解
list是一種序列式容器。list容器完成的功能實際上和數(shù)據(jù)結(jié)構(gòu)中的雙向鏈表是極其相似的,list中的數(shù)據(jù)元素是通過鏈表指針串連成邏輯意義上的線性表,也就是list也具有鏈表的主要優(yōu)點,即:在鏈表的任一位置進(jìn)行元素的插入、刪除操作都是快速的2021-11-11