c语言编程:建立一个结构体数组? 10
分析题意:
一、要定义两个结构体,一个是日期年月日,一个是员工。
二、程序包含三个功能:1、结构数组的输入。2、结构数组的输出。3、统计平均工资。根据编程习惯,三功能要写成独立函数,方便扩展和调用。
ps:员工数量定义成常量,也为编程习惯,便于修改。另外,日期验证我只写了月份检测给你参考。需扩展,自行编写函数验证。
#include <stdio.h>
#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;
}