1.定義結(jié)構(gòu)體數(shù)組
和定義結(jié)構(gòu)體變量類似,定義結(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類型的數(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è)人參加投票,從鍵盤先后輸入這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類型的數(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è)問題:
#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)系更加明顯。