能帮我看看程序有什么问题吗

#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 inputarr(STUDENT s[], int n);
void outputarr(STUDENT s[], int n);
int main()
{
STUDENT b[5];
inputarr(b,5);
outputarr(b,5);
return 0;
}

void inputarr(STUDENT s[],int n)
{
int i;
for(i=0;i<n;i++)
{
scanf("%d",&s[i].num);
scanf("%s",s[i].name);
scanf("%s",s[i].sex);
scanf("%d",&s[i].birthday.year);
scanf("%d",&s[i].birthday.month);
scanf("%d",&s[i].birthday.day);
scanf("%f",&s[i].score);
}
}
void outputarr(STUDENT s[],int n)
{
int i;
for(i=0;i<n;i++)
{
printf("学号:%d 姓名:%s 性别:%s 出生日期:%d-%d-%d 成绩:%f\n",s[i].num,s[i].name,s[i].sex,s[i].birthday.year,s[i].birthday.month,s[i].birthday.day,s[i].score);
}
}

修改处见注释,供参考:

#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 inputarr(STUDENT s[], int n);
void outputarr(STUDENT s[], int n);
int main()
{
    STUDENT b[5];
    inputarr(b, 5);
    outputarr(b, 5);
    return 0;
}

void inputarr(STUDENT s[], int n)
{
    int i;
    for (i = 0; i < n; i++)
    {
        scanf("%d", &s[i].num);
        getchar();              //修改
        scanf("%s", s[i].name);
        getchar();              //修改
        scanf("%c", &s[i].sex);  //scanf("%s", s[i].sex);修改
        scanf("%d", &s[i].birthday.year);
        scanf("%d", &s[i].birthday.month);
        scanf("%d", &s[i].birthday.day);
        scanf("%f", &s[i].score);
    }
}
void outputarr(STUDENT s[], int n)
{
    int i;
    for (i = 0; i < n; i++)
    {
        //printf("学号:%d 姓名:%s 性别:%s 出生日期:%d-%d-%d 成绩:%f\n",
        printf("学号:%d 姓名:%s 性别:%c 出生日期:%d-%d-%d 成绩:%f\n", //修改
            s[i].num, s[i].name, s[i].sex, s[i].birthday.year, s[i].birthday.month, s[i].birthday.day, s[i].score);
    }
}