向函数传递结构体帮忙解答了

 

供参考:

#include<stdio.h>
#include<string.h>
typedef struct date{
        int year;
        int month;
        int day;
}DATE;

typedef struct student{
        int  num;
        char name[20];
        char sex;
        DATE birthday;
       float score;
}STUDENT;

void input(STUDENT *s);
void output(STUDENT s);

int main()
{
    STUDENT stu;
    input (&stu);
    output(stu);
    
    return 0;
}

void input(STUDENT *s)
{
     scanf("%d %s %c %d %d %d %f",&s->num,s->name,&s->sex,
          &s->birthday.year,&s->birthday.month,&s->birthday.day,&s->score);
}

void output(STUDENT s)
{
    printf("学号:%d\n姓名:%s\n性别:%c\n出生日期:%d年%d月%d日\n成绩:%.1f\n",
    s.num,s.name,s.sex,s.birthday.year,s.birthday.month,s.birthday.day,s.score);
}

 

函数里调用:
s->num;
s->name;
s->birthday.year;
s->birthday.month;
s->birthday.day;
s->score;

供参考:

int main()
{
    STUDENT stu[10];
    intput(stu);
    output(stu);
    return 0;
}

void input(STUDENT *s)
{
     int i=0;
     printf("Input:num   name  sex year month day  score\n");
     while(i<10){
          printf("Input student info of %d:\n",i+1);
          scanf("%d %s %c %d %d %d %f",&s->num,s->name,&s->sex,
          &s->birthday.year,&s->birthday.month,&s->birthday.day,&s->score);
          i++;s++;
     }
}

void output(STUDENT *s)
{
    int i;
    for(i=0;i<10;i++){
        printf("%d %s %c %d %d %d %f\n",s->num,s->name,s->sex,
          s->birthday.year,s->birthday.month,s->birthday.day,s->score);
        s++;
    }
}

 

输出函数按格式修改下: 

void output(STUDENT *s)
{
    int i;
    for(i=0;i<10;i++){
        printf("学号:%d\n姓名:%s\n性别:%c\n出生日期:%d年%d月%d日\n成绩:%f\n",
                    s->num,s->name,s->sex,s->birthday.year,s->birthday.month,
                    s->birthday.day,s->score);
        s++;
    }
}

 

完全按要求,修改如下:

int main()
{
    STUDENT stu[10];
    input(stu);
    output(stu);
    
    return 0;
}

void input(STUDENT *s)
{
     int i=0;
     while(i<10){
          scanf("%d %s %c %d %d %d %f",&s->num,s->name,&s->sex,
          &s->birthday.year,&s->birthday.month,&s->birthday.day,&s->score);
          i++;s++;
     }
}

void output(STUDENT *s)
{
    int i;
    for(i=0;i<10;i++){
        printf("学号:%d\n姓名:%s\n性别:%c\n出生日期:%d年%d月%d日\n成绩:%.1f\n",
                    s->num,s->name,s->sex,s->birthday.year,s->birthday.month,
                    s->birthday.day,s->score);
        s++;
    }
}