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;
}
但是,相比较使用结构体的方法,我们对于候选人和票数的关系,更加直观,联系更加明显。
相关文章
- C++学习——int、long、long long, double, long double等的占用空间及取值范围「建议收藏」
- c++视频转字符画_c++字符数组转化为字符串
- C++ 炼气期之数组探幽
- C++ 练气期之二维数组与矩阵运算
- EasyC++52,using声明和using编译指令
- 曼哈顿距离 (C++) NOI 1062
- 【c++的一些常用数组函数】
- c++ auto类型_auto C++
- C++构造函数的作用_c++什么是构造函数
- C++数组搜索(二分法)
- vs2010sp1安装未成功_c++2005怎么安装
- C++ 中的字符串数组(5 种不同的创建方式3-5)
- C++结构体和类的区别_c++有结构体吗
- c++的链表-链表入门(C++)
- C++ 创建动态二维数组
- 简单C++单元测试框架(支持一键切到GTest或Boost.Test)
- c++ new string数组问题详解程序员
- C++11 constexpr和const的区别详解
- C++自增自减运算符(++和–)用法详解
- C++二维数组完全攻略
- 新手入门:C++下的引用类型
- C++对数组的引用实例分析
- C++中关于[]静态数组和new分配的动态数组的区别分析
- C++指针数组、数组指针、数组名及二维数组技巧汇总