上一篇博客是关于结构体的简单介绍,了解到结构体就是我们根据自己的需要建立的一种数据类型,允许用户存储不同的数据类型,而结构体数组是:定义一个数组时,元素类型为结构类型。
在结构体数组中存放的每一个数据都是我们自定义的数据类型。
作用: 将自定义的结构体放到一个数组中方便维护和访问。
语法:struct 结构体名 数组名[元素个数]
- 应该就跟普通数组基本一样,只是数组的类型换成了结构体
结构体数组可以在定义的时候进行赋初始值:数组名[元素个数] = { {} ,{} ,… {} }
仍然使用上一部分的demo来进行演示:
//首先是进行结构体的定义
struct student
{
string name;
int age;
int score;
};
int main()
{
//创建结构体数组
struct student class[3] = //允许换行操作,此处换行是为了美观
{
{"student1",18,90},//数组中的两个元素之间仍然是用逗号隔开
{"student2",23,77},
{"student",19,60}
};
//还可以跟普通数组一样进行赋值,但是要使用“.”访问
//例如将数组中的第2号位的信息进行更改
class[2].name = "student3";
class[2].age = 20;
class[2].score = 66;
}
对于结构体数组中的元素进行赋值
也可以跟普通的数组一样使用for循环进行赋值
但是示例中的数组,由于定义的结构体成员值是三个,所以此数组每个元素都包括三个数据成员
class[0].name class[0].age class[0].score
class[1].name class[1].age class[1].score
class[2].name class[2].age class[2].score
所以在使用for循环的时候要对于每一个值进行赋值
for(int i= 0;i < 3 ;i++)
cin >> class[i].name >> class[i].age >> class[i].score;
//输出同
应用举例:
对候选人得票的统计程序
- 设有3个候选人,最终只能有1人当选。今有10个人参加投票,从键盘先后输入这10个人所投的候选人的名字,要求最后输出这3个候选人的得票结果。
#include <iostream>
#include <cstring>
using namespace std;
struct candidate
{
char name[20];//姓名
int count;//得票数统计
};
int main()
{
candidate leader[3] = {"can1",0,"can2",0,"can3",0}
char vote[20];//此处依次输入的是10人所投的候选人姓名
for(int i = 0;i < 10;i++)
{
cin>>vote;
for(int m = 0;m < 3 ;m++ )
if(strcmp(vote,candidate[m].name)==0)
candidate[m].count++;
}
cout<<"得票统计"<<endl;
for(int i = 0;i < 3;i++ }
cout<<candidate[i].name<<" : "<<candidate[i].count<<endl;
return 0;
}
- num只小白鼠(1 < num < 100),每只白鼠头上戴着一顶有颜色的帽子。现在称出每只白鼠的重量,要求按照白鼠重量从大到小的顺序输出它们头上帽子的颜色。帽子的颜色用“red”,“blue”等字符串来表示。不同的小白鼠可以戴相同颜色的帽子。白鼠的重量用整数表示。
输入
第一行为一个整数num,表示小白鼠的数目。下面有num行,每行是一只白鼠的信息。第一个为不大于1000的正整数,表示白鼠的重量,;第二个为字符串,表示白鼠的帽子颜色,字符串长度不超过10个字符。注意:白鼠的重量各不相同。
输出
按照白鼠的重量从大到小的顺序输出白鼠的帽子颜色。
//这道题可以用两个数组来完成,一个数组是重量,另一个是帽子颜色
//现在用结构体数组来试一下
#include<iostream>
using namespace std;
struct whitemouse{
int weight;
char color[20];
};
int main()
{
int num;
cin>>num;//小白鼠的个数
struct whitemouse mouse[num],temp;//先输入小白鼠的个数,然后再开一个数组,可能有些编译器是不能通过的,如果不能通过可以定义一个全局的固定量num,满足题目的条件即可
for(int i = 0;i < num;i++)
cin>> mouse[i].weight >> mouse[i].color;
for(int i = 1;i < num;i++)
for(int m = 0; m <= num-1-i;m++)
if(mouse[m].weight<mouse[m+1].weight)
{
temp=mouse[m].weight;//手动交换,也可以用swap函数进行交换
mouse[m].weight=mouse[m+1].weight;
mouse[m+1] = temp;
}
for(int i=0; i<num; i++)
cout<<mouse[i].color<<endl;
return 0;
}