我用VS写代码,但是调试时跳过了一段代码

代码如下:

#include
#include
#include
FILE* kp;

int main()
{
    int _S1 = 0;
    char _S2[256];
    int _S3 = 0;
    int _S4 = 0;
    int _S5 = 0;
    char _S6[256];
    int _S7 = 0;
    int _S8 = 0;
    int _S9 = 0;

    printf("欢迎来到系统!\n");
    system("cls");
    printf("\n\n\n\n\n");
    printf("您要:\n");
    printf("\t\t1、报名\t\t\n");
    printf("\t\t2、续费\t\t\n");
    printf("\t\t3、退钱\t\t\n");
    printf("\t\t4、查看说明\t\t\n");
    scanf("%d\n", &_S1);

    switch (_S1)
    {
    case 1:
        printf("请输入你孩子的姓名的英文\n");
        scanf("%s\n", &_S2);

        printf("请输入阶段\n");
        scanf("%d\n", &_S3);

        kp = fopen("C:\\Users\\lenovo\\Desktop\\报名者.xlsx", "w");
        fputs("\b姓名\t\b", kp);
        fprintf(kp, "%s\n", _S2);
        fseek(kp, -1L, 1);
        fputs("\b阶段\t\b", kp);
        fprintf(kp, "%d\n", _S3);
        fseek(kp, -1L, 1);
        fclose(kp);

        printf("付费请联系我们的老师:13546107273!\n");

        system("pause");
        break;
    case 2:
        printf("请输入密码\n");
        scanf("%d\n", &_S4);

        if (_S4 ==11111111)
        {
            printf("输入成功!\n");
            system("pause");
            printf("请输入你孩子的名字的英文\n");
            scanf("%s\n", &_S6);

            printf("是否续费?是(1)否(2)\n");
            scanf("%d\n", &_S5);

            if (_S5 == 1)
            {
                kp = fopen("C:\\Users\\lenovo\\Desktop\\续费者.xlsx", "w");
                fprintf(kp, "\b%s\n", _S6);
                fseek(kp, -1L, 1);
                fclose(kp);

                printf("付费请联系我们的老师:13546107273\n");

                system("pause");
            }
            else if (_S5 == 2)
            {
                system("pause");
            }
        }

        break;

    case 3:
        printf("是(1)否(2)退费?\n");
        scanf("%d\n", &_S8);

        if (_S8 == 1)
        {
            printf("为什么要退钱?\n");
            scanf("%s\n", &_S7);

            printf("请输入你孩子的姓名\n");
            scanf("%s\n", &_S9);

            kp = fopen("C:\\Users\\lenovo\\Desktop\\退钱原因.xlsx", "w");
            fprintf(kp, "\b%s\n", _S9);
            fprintf(kp, "\b%s\n", _S7);
            fclose(kp);

            printf("关于退费,后面程序请联系我们的老师:13546107273\n");

            system("pause");
        }
        else if (_S8 == 2)
        {
            system("pause");
        }

        break;

    case 4:
        printf("\n\n\n\n\n");
        printf("关于使用,如果您要到下一步,请按换行键,主页要输入数字");

        system("pause");

        break;

    default:

        break;
    }
    return 0;
}

程序运行界面:

img


跳过的代码是56——71行
源代码图片:

img

img

img

img

   scanf("%d", &_S1); 这行%d后面的\n去掉
   scanf("%d", &_S4); 这行%d后面的\n去掉

因为你前面连续输入了2行2,所以密码拿到的其实是2,而不是8个1
你scanf里不要写\n,这会导致你必须连续敲两次回车才继续往下执行代码,你就会不小心多输入很多不该输入的数据