c语言编程:建立一个结构体数组?
分析题意:一、要定义两个结构体,一个是日期年月日,一个是员工。二、程序包含三个功能:1、结构数组的输入。2、结构数组的输出。3、统计平均工资。根据编程习惯,三功能要写成独立函数,方便扩展和调用。ps:员工数量定义成常量,也为编程习惯,便于修改。另外,日期验证我只写了月份检测给你参考。需扩展,自行编写函数验证。#include #define M 3//最大员工数量typedef struct date{ int year; int month; int day;}YMD;typedef struct employee{ int id;//工号 char name[20];//姓名 YMD date;//日期 int wage;}EME;void inputInfo(EME emes[]);//输入void outputInfo(EME emes[]);//输出float getAvg(EME emes[]);//求平均工资int main(){ EME emes[M];//员工结构体数组 inputInfo(emes); outputInfo(emes); printf("平均工资:%f",getAvg(emes)); return 0;}void inputInfo(EME emes[]){ int i; for(i=0;i<M;i++) { printf("请输入员工%d的信息:\n",i+1); printf("工号:"),scanf("%d",&emes[i].id); printf("姓名:"),scanf("%s",emes[i].name); printf("日期(分别输入年月日,空格分割):"),scanf("%d%d%d",&emes[i].date.year,&emes[i].date.month,&emes[i].date.day); if(emes[i].date.month>12 || emes[i].date.month<=0)//日期输入的验证不通过时,重新输入,验证可单独写函数,这里只做参考! { printf("输入日期不符合,请重新输入!\n\n"),i--; continue; } printf("工资:"),scanf("%d",&emes[i].wage); printf("\n"); }}void outputInfo(EME emes[]){ int i; printf("所有员工的信息为:----------------------------\n"); for(i=0,printf("员工%d的信息:\n",i+1);i<M;i++) { printf("工号:%d\n",emes[i].id); printf("姓名:%s\n",emes[i].name); printf("日期:%04d-%02d-%02d\n",emes[i].date.year,emes[i].date.month,emes[i].date.day); printf("工资:%d\n",emes[i].wage); printf("\n"); }}float getAvg(EME emes[]){ int i; float sum=0; for(i=0;i<M;i++) sum+=emes[i].wage; return sum/M;}
C语言结构体数组的定义是什么?
结构数组就是具有相同结构类型的变量集合。假如要定义一个班级40个同学的姓名、性别、年龄和住址, 可以定义成一个结构数组。如下所示:struct{char name[8];char sex[2];int age;char addr[40];}student[40];也可定义为:struct string{char name[8];char sex[2];int age;char addr[40];};struct string student[40]。C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。
C语言结构体数组的定义
所谓结构体数组,是指数组中的每个元素都是一个结构体。在实际应用中,C语言结构体数组常被用来表示一个拥有相同数据结构的群体,比如一个班的学生、一个车间的职工等。结构体可以存储不同的数据类型,将他们互相联系起来。结构体数组可以连续存储多个结构体,和数组作用相似。比如想定义同一个最小外接矩形的四个坐标值,并给予这个矩形一个特征编号。当需要存储多个最小外接矩形的信息时,就需要动态申请一个结构体数组。struct 结构体类型名{类型名 成员名;类型名 成员名;……},先声明结构体类型,再定义结构体变量名。声明结构体类型,不分配空间,定义结构体类型变量,就要分配内存空间。扩展资料:结构体数组指针类型:一个结构体变量的指针就是该变量所占据的内存段的起始地址。可以设一个指针变量,用来指向一个结构体变量,此时该指针变量的值是结构体变量的起始地址,指针变量也可以用来指向结构体数组中的元素。1、类型一:指向结构体变量的指针引用结构体变量中的成员。2、类型二:用结构体变量和指向结构体变量的指针构成链表,链表是一种常见的重要的数据结构。链表有一个“头指针”变量,以head表示,它存放一个地址。该地址指向一个元素。链表中的每一个元素称为“结点”,每个结点都应包括两个部分:一是用户需要用的实际数据,二是下一个结点的地址。链表中各元素在内存中的存储单元可以是不连续的。要找某一元素,可以先找到上一个元素,根据它提供的下一元素地址找到下一个元素。这种链表的数据结构,必须利用结构体变量和指针才能实现。可以声明一个结构体类型,包含两种成员,一种是用户需要用的实际数据,另一种是用来存放下一结点地址的指针变量。参考资料来源:百度百科—结构体类型—数组