C语言结构体编程题,求助大神啊

2024-11-17 11:04:42
推荐回答(1个)
回答1:

根据题意:

一、教师信息定义为结构体,其成员年月也为结构体(可直接定义成两个成员变量,本题没有强制要求),婚姻状态采用共用体类型。

二、输入信息直接写在main函数,实际软件开发应单独写输入函数,输入验证我只写了性别和婚姻状态的验证,其余成员的输入验证需要自己添加。(实际开发,验证也应单独写函数调用)。

三、输出单独函数。

#include

typedef union maType//结婚状态共用体

{

    int type;//0未婚1已婚2离异

}MTE;

typedef struct s_date

{

    int year;

    int month;

}SDATE;

typedef struct teacher

{

   char idNum[20];

   char name[20];

   int sex;//0女1男

   SDATE date;

   MTE mtype;

   char dtName[100];//工作部门名称

}TEER;

void printfTinfo(TEER tInfo);

int main()

{

    TEER tInfo;

    printf("输入一名教师信息:\n");

    printf("工资卡号(20个字符):"),scanf("%s",tInfo.idNum);

    printf("姓名(20个字符):"),scanf("%s",tInfo.name);

    do

        printf("性别(0女1男):"),scanf("%d",&tInfo.sex);

    while(tInfo.sex!=0 && tInfo.sex!=1);

    printf("出生年月(格式:YYYY MM):"),scanf("%d%d",&tInfo.date.year,&tInfo.date.month);

    do

        printf("婚姻状态(0未婚1已婚2离异):"),scanf("%d",&tInfo.mtype.type);

    while(tInfo.mtype.type!=0 && tInfo.mtype.type!=1 && tInfo.mtype.type!=2);

    printfTinfo(tInfo);

    return 0;

}

void printfTinfo(TEER tInfo)

{

    printf("\n----------------\n输入的信息为:\n");

    printf("工资卡号:%s\n",tInfo.idNum);

    printf("姓名:%s\n",tInfo.name);

    printf("性别:%s\n",tInfo.sex?"男":"女");

    printf("出生年月:%04d-%02d\n",tInfo.date.year,tInfo.date.month);

    printf("婚姻状态:");

    switch(tInfo.mtype.type)

    {

        case 0:printf("未婚\n");break;

        case 1:printf("已婚\n");break;

        case 2:printf("离异\n");break;

    }

}