c语言编程:建立一个结构体数组?

建立一个员工结构体数组,有三名员工的信息。结构体里有四个成员:工号,姓名,出生年月日(也是结构体变量),工资。编程实现这三个员工所有信息的输入,输出,并求出工资的平均值输出。

分析题意:

一、要定义两个结构体,一个是日期年月日,一个是员工。

二、程序包含三个功能: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;

}

温馨提示:答案为网友推荐,仅供参考
相似回答