在vs中运行如下代码为何不按逻辑,改变gets_s在vc中运行为何可行?

在vs中运行如下代码为何不按逻辑,改变gets_s在vc中运行为何可行

#include <stdio.h>
#define N 3

typedef struct Score
{
    double C;    //C语言成绩
    double Eng;  //英语成绩
    double Math; //数学成绩
};

typedef struct
{
    //变量声明
    char number[13];     //学号
    char name[11];       //姓名
    char sex[5];         //性别
    int age;             //年龄
    struct Score score;  //C语言、英语、数学三门科目成绩
    double average;      //平均成绩
}Stu;

Stu student[N];

int main()
{
    for (int i = 0; i < N; i++)
    {
        fflush(stdin);
        printf("请输入第%d/3个学生信息:\n", i + 1);
        printf("--------------------------------------------\n");
        printf("学号(12个字符以内):");
        gets_s(student[i].number, 13);
        printf("姓名(10个字符以内):");
        gets_s(student[i].name, 11);
        printf("性别(4个字符以内):");
        gets_s(student[i].sex, 5);
        printf("年龄(整数):");
        scanf_s("%d", &student[i].age);
        printf("《C语言》成绩(整数):");
        scanf_s("%lf", &student[i].score.C);
        printf("《英语》成绩(整数):");
        scanf_s("%lf", &student[i].score.Eng);
        printf("《高数》成绩(整数):");
        scanf_s("%lf", &student[i].score.Math);
    }
}

在每个scanf_s前面加上一行
fflush(stdin);