10.1结构体

1.结构是由不同数据类型的数据组成的集合体。
2.结构由数目固定的成员构成。
3.各成员可以具有不同的数据类型。
4.一个结构变量在内存占有一片连续的存储空间。

(一) 结构类型定义形式:

struct 标识符
{类型 成员1;
 类型 成员2;
 ……
 类型 成员n;
 };

例:

struct contact
{
int id;
char name[16];
char phone[16];
};
contact a=
{
202001 //int 初始化;
"Jack"   //char 初始化;
"123456789"
};

注:
初始化时必须要对应顺序。

(二) 结构体的访问:
1.结构变量成员的访问

#include <iostream>
#include <cstring>
using namespace std;
struct contact
{
int id;
char name[16];
char phone[16];
};
int main()
{
contact a;
a.id = 202001;    //通过使用.来访问结构体中的成员
strcpy(a.name,"Jack");
strcpy(a.phone,"123456789");
cout <<a.name<<endl; //输出name
cout <<a.phone<<endl; //输出phone
return 0;
}

2.用指针访问结构变量的成员
结构指针->成员 (更常用)
或(*结构指针).成员

struct person
{char name[20];
unsigned long id;
double salary;
}
int main()
{
person pr1;
person *pp;
pp=&pr1;
strcpy(pp->name,"David Marat");  //对结构体成员进行赋值
pp->id=1234556;
pp->salary=3233;
}

3.类型相同的结构变量可以整体赋值
“类型相同的变量”是指用同一类型标识符说明的变量

struct weather1
{double temp; double wind;}yesterday;
struct weather2
{double temp; double wind;}today;

yesterday和today不为同一类型变量,所以不可以整体赋值

举个栗子

对候选人得票的统计程序。
设有3个候选人,最终只能有1人当选。今有10个人参加投票,从键盘先后输入这10个人所投的候选人的名字,要求最后输出这3个候选人的得票结果。

解题思路:
总共有10个人参加投票,那么可以利用结构体来表示每次一个人投票时的结果。

源代码:

#include <iostream>
#include <cstring>
using namespace std;
struct person
{
char name[20];
int count;
};
int main()
{
    person leader[3]={"Li",0,"Zhang",0,"Fun",0}; //定义person类型的数组,内容为3个候选人的姓名和当前的得票数

    int i,j;
    char leader_name[20];  //leader_name为投票人所选的人的姓名
    for(i=0;i<10;i++)
    {
        cin>>leader_name; //输入10张票上所写的姓名
        for(j=0;j<3;j++) //将票上姓名与3个候选人姓名比较
            if(strcmp(leader_name,leader[j].name)==0)
            leader[j].count++;  //如果与某一候选人的姓名相同,就给他加一票
    }
cout <<endl;
for(i=0;i<3;i++) //输出3个候选人的姓名与最后得票数
{
    cout<<leader[i].name<<":"<<leader[i].count<<endl;
}
return 0;
}
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值