尼尔森系 2024-05-20 11:39 采纳率: 100%
浏览 7
已结题

C语言 结构体指针习题

我这个代码为什么运行不起来,哪里有问题,帮忙看看


```c
#include <stdio.h>

struct Time
{    
    int year;
    int month;
    int day;
};

struct Yimiao
{
    char name[8];
    int age;
    struct Time onetime;
    struct Time twotime;
};

struct Yimiao *Input(struct Yimiao men)
{
    int one_flag,two_flag;
    
    printf("请问姓名是:");
    scanf("%s",men.name);
    
    printf("请问年龄是:");
    scanf("%d",&men.age); 
    
    printf("请问是否接种过疫苗(Y/N):");
    scanf("%d",&one_flag);
    
    if(one_flag == 1)
    {
        printf("请录入第一针疫苗接种的日期(yyyy-mm-dd):");
        scanf("%d-%d-%d",&(men.onetime.year),&(men.onetime.month),&(men.onetime.day)); 
        
        printf("请问是否接种第二针疫苗(Y/N)");
        scanf("%d",&two_flag);
        
        if(two_flag == 1)
        {
            printf("请录入第二针疫苗接种的日期(yyyy-mm-dd):");
            scanf("%d-%d-%d",&(men.twotime.year),&(men.twotime.month),&(men.twotime.day)); 
        }
        else{
            men.twotime.year = 0;
            printf("请尽快接种第二针疫苗\n");
        }
    }
    else{
        men.onetime.year = 0;
        printf("请尽快接种疫苗!\n");     
    }
    printf("\n");    
    
    return ((struct Yimiao *)&men);
}


int Out(struct Yimiao *men)
{
    int i;
    printf("\n");
    printf("姓名:%s\n",men->name);
    printf("年龄:%d\n",men->age);
    if(men->onetime.year == 0)
    {
        printf("未接种疫苗\n"); 
    }
    else{
    printf("第一针时间:%d-%d-%d\n",men->onetime.year,men->onetime.month,men->onetime.day);    
    }
    if(men->twotime.year == 0)
    {
        printf("未接种第二针疫苗\n");     
    }
    else{
        printf("第二针时间:%d-%d-%d\n",men->twotime.year,men->twotime.month,men->twotime.day);    
    }
        
    printf("\n");
}


int main()
{
    struct Yimiao *pt[3];

    pt[0] = Input(*pt[0]);
    pt[1] = Input(*pt[1]);
    pt[2] = Input(*pt[2]);    
    
    Out(pt[0]);
    Out(pt[1]);
    Out(pt[2]);
}




  • 写回答

6条回答 默认 最新

  • 尼尔森系 2024-05-20 15:23
    关注

    程序为了效率,一般不给函数传递结构体的变量,可以用指针代替
    形参用指针代替时,就没必要有函数返回值
    按照上述内容更改,程序可以运行

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

问题事件

  • 系统已结题 5月28日
  • 已采纳回答 5月20日
  • 创建了问题 5月20日