C语言结构体数组,结构体数组的定义,结构体数组的输出,结构体的应用 您所在的位置:网站首页 数组英文定义怎么写 C语言结构体数组,结构体数组的定义,结构体数组的输出,结构体的应用

C语言结构体数组,结构体数组的定义,结构体数组的输出,结构体的应用

2023-07-30 02:06| 来源: 网络整理| 查看: 265

结构体数组 结构体数组的定义:

结构体数组格式:声明变量类型 数组名称[数组长度]

//定义一个结构体数组名为a,它里面包含有5个元素,每一个元素都是一个结构体变量 Wor a[5]={}; #include typedef struct worker{ char id[10]; char name[10]; char sex[10]; int pay; }WOR; void main(){ WOR a[3]= { {"0001","陈文杰","男",1200}, {"0001","张三丰","女",500}, {"0001","张四丰","女",1200} } }

对比记忆 在这里插入图片描述

结构体数组的输出 #include typedef struct worker{ char id[10]; char name[10]; char sex[10]; int pay; }WOR; void main(){ WOR a[6]={ {"0001","陈文杰","男",1200}, {"0002","张三丰","女",5000}, {"0003","张四丰","女",1200}, {"0004","张五丰","男",2200}, {"0005","张六丰","男",5200}, {"0006","张七丰","男",6200} }; int i; for(i=0;i char id[10]; char name[10]; char sex[10]; int pay; }WOR; void output(WOR a[],int n){//次函数是用来输出长度为n的工人数组的信息 int i; printf("工号\t姓名\t性别\t年龄\n"); for(i=0;i WOR a[6]={ {"0001","陈文杰","男",1200}, {"0002","张三丰","女",5000}, {"0003","张四丰","女",1200}, {"0004","张五丰","男",2200}, {"0005","张六丰","男",5200}, {"0006","张七丰","男",6200} }; output(a,6); }

在这里插入图片描述

结构体的应用 案例一、

1、编写一个函数,它的目的是为了输出所有性别为男的的职工信息 算法分析: 1)这个函数它不用返回值因为该函数是为了完成输出 2)该函数要处理很多职工,就需要一个数组,数组的类型为职工类型 注意:在C语言当中字符串不能直接比较是否相同,要通过strcmp这个函数来比较其两个字符串是否相同

#include #include typedef struct worker{ char id[10]; char name[10]; char sex[10]; int pay; }WOR; void QueryWorker(WOR a[],int n){//次函数是用来输出长度为n的工人数组的信息 int i; printf("全部员工:\n"); printf("工号\t姓名\t性别\t年龄\n"); for(i=0;i if(strcmp(a[i].sex,"男")==0){ printf("%s\t%s\t%s\t%d\n",a[i].id,a[i].name,a[i].sex,a[i].pay); } } printf("所有女员工:\n"); printf("工号\t姓名\t性别\t年龄\n"); for(i=0;i printf("%s\t%s\t%s\t%d\n",a[i].id,a[i].name,a[i].sex,a[i].pay); } } } void main(){ WOR a[6]={ {"0001","陈文杰","男",1200}, {"0002","张三丰","女",5000}, {"0003","张四丰","女",1200}, {"0004","张五丰","男",2200}, {"0005","张六丰","男",5200}, {"0006","张七丰","男",6200} }; QueryWorker(a,6); }

在这里插入图片描述 2、能够输出指定性别的职工

#include typedef struct worker{ char id[10]; char name[10]; char sex[10]; int pay; }WOR; void QueryBySex(WOR a[],int n,char b[]){//次函数是用来输出长度为n的工人数组的信息 int i; printf("工号\t姓名\t性别\t年龄\n"); for(i=0;i printf("%s\t%s\t%s\t%d\n",a[i].id,a[i].name,a[i].sex,a[i].pay); } } } void main(){ WOR a[6]={ {"0001","陈文杰","男",1200}, {"0002","张三丰","女",5000}, {"0003","张四丰","女",1200}, {"0004","张五丰","男",2200}, {"0005","张六丰","男",5200}, {"0006","张七丰","男",6200} }; char b[10]; printf("请输入您要查询的性别 :\n"); scanf("%s",b); QueryBySex(a,6,b); } 案例二、

让用户输入一个工号,然后在一个结构体数组当中去查找有没有这个工人,如果有则输出这个工人的信息,如果没有则找不到此人

#include typedef struct worker{ char id[10]; char name[10]; char sex[10]; int pay; }WOR; void FindById(WOR a[],int n,char id[]){ //我们要访问数组里面每一个工人,如果发现了一个工人,就退出循环。如果找不到就输出找不到此人 int i; for(i=0;i//说明第i个工人就是我们要找的职工 break;//强制终止循环 } } //在退出循环之后,再来检查i与n的关系 if(i printf("找不到此人"); } } void main(){ WOR a[6]={ {"0001","陈文杰","男",1200}, {"0002","张三丰","女",5000}, {"0003","张四丰","女",1200}, {"0004","张五丰","男",2200}, {"0005","张六丰","男",5200}, {"0006","张七丰","男",6200} }; char b[10]; printf("请输入您要查询的id :\n"); gets(b); FindById(a,6,b); }

在这里插入图片描述

案例三、

求出所有职工中最高工资那个职工的信息 注意:这里有一个知识点:成员比较整体赋值

#include #include typedef struct worker{ char id[10]; char name[10]; char sex[10]; int pay; }WOR; void max(WOR a[],int n){ WOR m=a[0]; int i; for(i=0;i//如果m的工资小于a[i]的工资,就把m赋值给a[i] m=a[i]; } } printf("%s\t%s\t%s\t%d\n",m.id,m.name,m.sex,m.pay); //假设第一个工人是最高工资的那个工人 } void main(){ WOR a[6]={ {"0001","陈文杰","男",1200}, {"0002","张三丰","女",7000}, {"0003","张四丰","女",1200}, {"0004","张五丰","男",2200}, {"0005","张六丰","男",5200}, {"0006","张七丰","男",6200} }; max(a,6); }

在这里插入图片描述 上方程序改进 输出所有工资大于平均工资的职工 1、必须要先求出平均 2、在访问每一个职工,如果发现这个职工的工资要小于平均工资的话,就输出这个职工的信息。

#include #include typedef struct worker{ char id[10]; char name[10]; char sex[10]; int pay; }WOR; void QueryByAver(WOR a[],int n){ int i; float aver; int sum = 0; //求出总工资 for(i=0;i if(a[i].pay>=aver){//如果发现职工的工资大于等于平局工资,就输出对应职工的信息 printf("%s\t%s\t%s\t%d\n",a[i].id,a[i].name,a[i].sex,a[i].pay); } } } void main(){ WOR a[6]={ {"0001","陈文杰","男",3200}, {"0002","张三丰","女",7000}, {"0003","张四丰","女",1200}, {"0004","张五丰","男",2200}, {"0005","张六丰","男",5200}, {"0006","张七丰","男",6200} }; QueryByAver(a,6); }

在这里插入图片描述 算法变换

#include #include typedef struct stud{//定义了一个结构体 char Id[10];//学号 char Name[10];//姓名 int China;//语文成绩 int Math;//数学成绩 int English;//英语成绩 }STU; //编写一个函数,它的目的是为了输出所有学生的总分与平均分 void fun(STU a[],int n){ int sum=0,i; printf("学号\t姓名\t语文\t数学\t英语\t总分\t平局分\n"); //要访问里面的每一个学生 for(i=0;i STU a[8]={ {"S1","张一军",127,150,100}, {"S2","张二军",75,85,89}, {"S3","张三军",67,58,86}, {"S4","张四军",120,101,87}, {"S5","张五军",136,100,82}, {"S6","张六军",141,52,83}, {"S7","张七军",125,85,81}, {"S8","张八军",136,65,79} }; fun(a,8); }

在这里插入图片描述 案例变换: 注意字符串也不能够直接赋值,要通过一个函数来对字符串进行赋值 strcpy:通过这个函数才可以给字符串进行赋值

#include #include typedef struct stud{//定义了一个结构体 char Id[10];//学号 char Name[10];//姓名 int China;//语文成绩 int Math;//数学成绩 int English;//英语成绩 }STU; //编写一个函数,求出每一个学生的优秀科目,目的不是输出分数,而是要输出对应科目的名称 void Perferct(STU a[],int n){ int sum=0,i; char per[20]; int maxscore;//用来确保最优科目的分数 //要输出标题 printf("学号\t姓名\t语文\t数学\t英语\t最优秀科目\n"); //要访问里面的每一个学生,对于第i学生要确认它的最优科目名称(语文,数学,英语) //科目名称是字符串,所以要先定义一个字符串来确保保存最优科目名称 for(i=0;i maxscore = a[i].Math; strcpy(per,"数学"); } if(maxscore STU a[8]={ {"S1","张一军",127,150,100}, {"S2","张二军",75,85,89}, {"S3","张三军",67,58,86}, {"S4","张四军",120,101,87}, {"S5","张五军",136,100,82}, {"S6","张六军",141,52,83}, {"S7","张七军",125,85,81}, {"S8","张八军",136,65,79} }; Perferct(a,8); }

在这里插入图片描述



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有