结构体数组(C++)

来源:互联网 发布:linux chgrp 编辑:程序博客网 时间:2024/05/29 17:30

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;}

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



原创粉丝点击