C++结构体数组详细解析
时间:2021-05-04 10:51:39|栏目:C代码|点击: 次
1.定义结构体数组
和定义结构体变量类似,定义结构体数组时只需声明其为数组即可。如:
复制代码 代码如下:
struct Student{
int num;
char name[20];
char sex[5];
int age;
float score;
char addr[30];
};
Student stu[3]; //定义Student类型的数组stu
2.结构体数组的应用举例
题目:对候选人的票的统计程序。
设有3个候选人,最终只能有一个当选为领导。今有10个人参加投票,从键盘先后输入这10个人所投的候选人的名字,要求最后能输出这3个候选人的的票结果。
复制代码 代码如下:
#include<iostream>
using namespace std;
struct Person{
char name[20]; //姓名
int count; //票数计数器
};
int main(){
Person leader[3]={"Tom",0,"Neo",0,"Marry",0};
//定义Person类型的数组,内容为3个候选人的姓名和票数
int i,j,k=0;
bool tag;
cout<<"please input the name of the leader : Tom Neo Marry\n\n";
char leadername[20]; //该数组为每次输入的候选人的名字
for(i=0;i<10;i++){ //循环输入这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;
}
当然,如果不使用结构体也可以解决这个问题:
复制代码 代码如下:
#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;
}
但是,相比较使用结构体的方法,我们对于候选人和票数的关系,更加直观,联系更加明显。