结构体数组

16 篇文章 0 订阅

  1)结构体数组概念及定义
        a、结构数组的概念
数组的元素也可以是结构类型的。因此可以构成结构型数组。结构数组的每一个元素都是具有相同结构类型的下标结构变量。在实际应用中,经常用结构数组来表示具有相同数据结构的一个群体。
b、结构数组定义
①格式:
struct 结构名{
成员表列
}数组名[数组长度];
②例如:定义一个长度为5的数组,其中每一个元素都是stu结构类型
struct stu{
int num;
char *name;
char sex;
float score;
}boy[5];
③定义结构体的同时,定义数组
struct Student{
int age,
char *name;
char sex;
float score;
}stu[5];
④先定义结构体,后定义数组
struct Student boy[5];

  2)结构数组的初始化和遍历
a、结构数组的初始化
struct stu{
int age;
char *name;
};
①定义的同时初始化
第一种:
struct Student{
char *name;
int age;
}boy[3]={{"张三",17},{"李四",22},{"王武",25}};
第二种:
struct Student boy[2]={{"凤姐",18},{"范爷",20}};;
②先定义,后初始化,整体赋值
struct Student ds[2];
ds[0]=(struct Student){"cjk",18};
ds[1]=(struct Student){"xzmly",22};
③先定义,后初始化
struct Student stu[2];
//strcpy(stu[0].name,"zhangsan");
scanf("%s",stu[0].name);
stu[0].age=19;
b、结构数组的变量
//定义并初始化结构数组
struct Student{
char *name;
int age;
}boy[3]={{"张三",17},{"李四",22},{"王武",25}};
//遍历结构数组中的成员变量
for(int i=0;i<3;i++){
printf("name:%s,age:%d\n",boy[i].name,boy[i].age);
}

c、结构数组小练习
struct stu{
int num;
char *name;
char sex;
float score;
}
//定义结构体数组
struc stu boy[5]={
{101,"Li ping",'F',45},
{102,"Zhang ping",'M',62.5},
{103,"He fang",'F',92.5},
{104,"Cheng ling",'M',87},
{105,"Wang ming",'M',58}
};
①利用上面的stu的结构体,计算学生平均成绩和不及格的人数
②打印80--100分学生的成绩及姓名
float sum=0.0f;//保存总成绩
int count=0;//保存不及格的人数
for(int i=0;i<5;i++){
sum+=boy[i].score;
if(boy[i].score<60){
count++;
}else if(boy[i].score>=80&&boy[i].score<=100){
printf("name:%s,score:%.2f",boy[i].name,boy[i].score);
}
}
printf("平均成绩是:%.2f",sum/5);
printf("不及格的人数是:%d",count);


  3)简易的通讯录
应用:用结构数组实现通讯录

思路:
①定义一个结构数组,姓名,电话号码
②让用户从键盘输入要保存的姓名和电话号码
③输入完成后,可以打印出来
代码:
#include <stdio.h>
#define LEN 10;
struct Person{
//定义数组,保存联系人姓名
char name[21];
//保存电话号码
char telNum[12];
}contacts[LEN];
void main(){
struct Person{ contacts[LEN];
printf("请输入要保存的联系人信息。格式:姓名 电话\n");
for(int i=0;i<LEN;i++){
scanf("%s %s",contacts[i].name,contacts[i].telNum);
}
//遍历保存的信息
for(int i=0;i<LEN;i++){
printf("姓名:%s    电话:%s\n",contacts[i].name,contacts[i].telNum);
}
}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值