诸君,我搞不明白怎么回事

我用的vs,输入看上去没问题,但是输出绝对有问题

```c++
#include<stdio.h>
#include<iomanip>
#include<string>
#define N 3
struct stu
{
    int id[11];
    char name[12];
    int fen[11];
};
struct stu l[N];
int i = 0, n = N;

void caidan()
{
    printf("                                 ------------------------------------------\n");
    printf("                                 *      本程序最大可储存%d名学生信息      *\n", N);
    printf("                                 *               1-成绩输入               *\n");
    printf("                                 *               2-成绩修改               *\n");
    printf("                                 *               3-成绩删除               *\n");
    printf("                                 *               4-成绩查询               *\n");
    printf("                                 *               5-成绩输出               *\n");
    printf("                                 *               6-退出                   *\n");
    printf("                                 ------------------------------------------\n");
}
void shuru()
{
    if (i == N)
    {
        printf("已满,无法录入");
    }
    else
    {
        printf("请输入学生学号:");
        scanf_s("%d", l[i].id,11);
        printf("请输入学生姓名:");
        scanf_s("%s", l[i].name,13);
        printf("请输入学生成绩:");
        scanf_s("%d", l[i].fen,11);
    }
    system("pause");
    system("cls");
}
void shuchu()
{
    for (i = 0; i < N; i++)
        printf("学号:%d    姓名:%7s    成绩:%d\n",l[i].id, l[i].name,l[i].fen);
    system("pause");
    system("cls");
}
int main()
{
    int cho = 0;
lat:
    caidan();
    printf("                                请选择操作:");
    scanf_s("%d", &cho);
    switch (cho)
    {
    case 1:
        shuru();
        goto lat;
        break;
    case 2:
        goto lat;
    case 3:
        goto lat;
        break;
    case 4:
        goto lat;
        break;
    case 5:
        shuchu();
        goto lat;
        break;
    case 6:
        void exit();
        break;
    default:
        printf("无效输入\n");
        system("pause");
        system("cls");
        goto lat;
    }
    return 0;
}

scanf有这种用法吗,你存值的话不需这样吧


尽量不要用goto#include<stdio.h>
#include<iomanip>
#include<string>
#define N 3
struct stu
{
    int id,fen;//id[11];
    char name[12];
    //int fen[11];
};
struct stu l[N];
int i = 0, n = N;

void caidan()
{
    system("cls");  //
    
    printf("                                 ------------------------------------------\n");
    printf("                                 *      本程序最大可储存%d名学生信息      *\n", N);
    printf("                                 *               1-成绩输入               *\n");
    printf("                                 *               2-成绩修改               *\n");
    printf("                                 *               3-成绩删除               *\n");
    printf("                                 *               4-成绩查询               *\n");
    printf("                                 *               5-成绩输出               *\n");
    printf("                                 *               6-退出                   *\n");
    printf("                                 ------------------------------------------\n");
}
void shuru()
{
    if(i == N)
    {
        printf("已满,无法录入");
    }
    else
    {
        printf("请输入学生学号:");
        scanf_s("%d", &l[i].id, 11);//缺&
        printf("请输入学生姓名:");
        scanf_s("%s", l[i].name, 13);
        printf("请输入学生成绩:");
        scanf_s("%d", &l[i].fen, 11);//
    }

    system("pause");
    //system("cls");
}
void shuchu()
{
    for(i = 0; i < N; i++)
        printf("学号:%d    姓名:%7s    成绩:%d\n", l[i].id, l[i].name, l[i].fen);

    system("pause");
    //system("cls");
}
int main()
{
    int cho = 0;

    while(1)//lat:
    {        
        caidan();
        printf("                                请选择操作:");
        scanf_s("%d", &cho);

        switch(cho)
        {
            case 1:
                shuru();
                //goto lat;
                break;

            case 2:
                //goto lat;

            case 3:
                //goto lat;
                break;

            case 4:
                //goto lat;
                break;

            case 5:
                shuchu();
                //goto lat;
                break;

            case 6:
                return 0;//void exit();                
                break;

            default:
                printf("无效输入\n");
                system("pause");
                //system("cls");
                //goto lat;
        }
    }

    return 0;
}