首先先把源码附上
#include<iostream>
using namespace std;
#define N 4
struct employee
{
char num[10];
char name[10];
double salary;
};
struct employee emp[N]={{"1001","李明",2800},{"1002","王芳",5000 },{"1003","王强",3600 },{"1004","刘刚",4500 }};
void show()
{
cout<<"显示具有employee结构的"<<N<<"个记录:"<<endl;
for(int i=0;i<N;i++)
{
cout<<emp[i].num<<emp[i].name<<emp[i].salary<<endl;
}
cout<<endl;
}
void find()
{
int k=0;
float x=emp[0].salary;
for(int i=1;i<N;i++)
{
if(emp[i].salary>x)
{
x=emp[i].salary;
k=i;
}
}
cout<<"显示结构体数组中具有最大工资值的记录:"<<endl;
cout<<emp[k].num<<emp[k].name<<emp[k].salary<<endl;
}
int main()
{
show();
find();
return 0;
}
这是一个输出结构体数组employee中所有员工的数据,并查找出工资最高的员工记录的举例
然后就开始代码分析
首先,下面是对每个语句的解释:
#include <iostream>
引入头文件iostream,使得可以使用C++的输入输出流。
using namespace std;
使用命名空间std,这里包含了C++标准库中的所有函数。
#define N 4
使用#define宏定义N为4。
struct employee
{
char num[10];
char name[10];
double salary;
};
定义结构体employee,其中包含员工编号、员工姓名和员工工资三个成员变量。
struct employee emp[N]={{"1001","李明",2800},{"1002","王芳",5000 },{"1003","王强",3600 },{"1004","刘刚",4500 }};
定义结构体数组emp,其中包含4个元素,每个元素都是一个employee类型的结构体,包含员工编号、员工姓名和员工工资三个成员变量,并依次初始化。
void show()
{
cout<<"显示具有employee结构的"<<N<<"个记录:"<<endl;
for(int i=0;i<N;i++)
{
cout<<emp[i].num<<" "<<emp[i].name<<" "<<emp[i].salary<<endl;
}
cout<<endl;
}
自定义函数show(),输出emp数组中的元素。for循环遍历数组,分别输出每个元素的num、name和salary成员变量。
void find()
{
int k=0;
float x=emp[0].salary;
for(int i=1;i<N;i++)
{
if(emp[i].salary>x)
{
x=emp[i].salary;
k=i;
}
}
cout<<"显示结构体数组中具有最大工资值的记录:"<<endl;
cout<<emp[k].num<<" "<<emp[k].name<<" "<<emp[k].salary<<endl;
}
自定义函数find(),用于遍历emp数组中的元素,找到其中salary最大的元素,并输出其num、name和salary成员变量。使用x保存当前最大工资值,k保存当前最大工资值对应的员工下标。
int main()
{
show();
find();
return 0;
}
主函数,调用了show()函数和find()函数,然后返回0。
程序执行结果如下:
大致分析就是这样,希望这一简单的举例能帮到大家
然后补充一下;结构体数组初始化的一般形式为
[struct] 结构体名 结构体数组名[常量表达式]={初值};