zl程序教程

您现在的位置是:首页 >  后端

当前栏目

C++结构体数组详细解析

C++数组 解析 详细 结构
2023-06-13 09:15:06 时间

1.定义结构体数组

和定义结构体变量类似,定义结构体数组时只需声明其为数组即可。如:

复制代码代码如下:

structStudent{
    intnum;
    charname[20];
    charsex[5];
    intage;
    floatscore;
    charaddr[30];
};
Studentstu[3];//定义Student类型的数组stu

2.结构体数组的应用举例

题目:对候选人的票的统计程序。

设有3个候选人,最终只能有一个当选为领导。今有10个人参加投票,从键盘先后输入这10个人所投的候选人的名字,要求最后能输出这3个候选人的的票结果。

复制代码代码如下:

#include<iostream>
usingnamespacestd;
structPerson{
   charname[20];                      //姓名
   intcount;                          //票数计数器
};
intmain(){
   Personleader[3]={"Tom",0,"Neo",0,"Marry",0};
                                      //定义Person类型的数组,内容为3个候选人的姓名和票数
   inti,j,k=0;
   booltag;
   cout<<"pleaseinputthenameoftheleader:TomNeoMarry\n\n";
   charleadername[20];               //该数组为每次输入的候选人的名字
   for(i=0;i<10;i++){                  //循环输入这10个人选的候选人的名字
      cout<<"inputname"<<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<<"Abandonedtickets:"<<k<<endl;
   return0;
}

当然,如果不使用结构体也可以解决这个问题:

复制代码代码如下:
#include<iostream>
#include<string>
usingnamespacestd;
intmain(){
 char*name[3]={"Tom","Neo","Marry"};
 int   count[3]={0,0,0};
 int   i,j,k=0;
 booltag=1;
 cout<<"pleaseinputthenameoftheleader:TomNeoMarry\n\n";
 charleadername[20];               
 for(i=0;i<10;i++){                
  cout<<"inputname"<<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<<"Abandonedtickets:"<<k<<endl;
 return0;
}

或者
复制代码代码如下:
#include<iostream>
#include<string>
usingnamespacestd;
intmain(){
 stringname[3]={"Tom","Neo","Marry"};
 int   count[3]={0,0,0};
 int   i,j,k=0;
 booltag=1;
 cout<<"pleaseinputthenameoftheleader:TomNeoMarry\n\n";
 stringleadername;               
 for(i=0;i<10;i++){                
  cout<<"inputname"<<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<<"Abandonedtickets:"<<k<<endl;
 return0;
}

但是,相比较使用结构体的方法,我们对于候选人和票数的关系,更加直观,联系更加明显。