用单链表实现学生管理类

问题遇到的现象和发生背景

用单链表实现学生管理系统

遇到的现象和发生背景,请写出第一个错误信息

运行没有交互,直接结束了

img

用代码块功能插入代码,请勿粘贴截图。 不用代码块回答率下降 50%
#include 
#include
#include
#define MAXSIZE 100

 
typedef struct{
    char no[20];       // 学号 
    char name[20];    // 姓名 
    int M ;        // 数学成绩 
    int E;        //英语成绩 
    int Ch;         //语文成绩 
    int P  ;       //物理成绩 
    int Ce ;      //化学成绩 
}Student;

typedef struct{
    Student elem[MAXSIZE]; //线性表占用的数组空间 
    int last;    //最后一个元素的下标
}SeqList;



int InsList(SeqList *L,int i,Student e)   //插入学生信息 
{    /*在L中第i个位置之前插入新的数据元素e,L的长度加1*/ 
    int k;
    if(i<1||(i>L->last+2))
    {
        return 0;
    }
    for(k=L->last;k>=i-1;k--) //元素向后移动位置
    L->elem[k+1]=L->elem[k];
    L->elem[i-1]=e;
    L->last++;
    return 1;
}

int DelList(SeqList *L,int i) //删除指定位置学生记录 
{      
    int k;
    if(i<1||i>L->last+1)
    return 0;
    for(k=i;k<=L->last;k++) 
    {
        L->elem[k-1]=L->elem[k]; //将后面元素依次前移 
    }
    L->last--;
    return 1;
}

int main()
{
    int i,x,a,temp,select,sum=0,c;
    SeqList L;
    Student m,e;
    printf("********************************************************************\n"); 
    printf("*      1. 根据指定学生个数,逐个输入学生信息;                      *\n");
    printf("*      2. 逐个显示学生表中所有学生的相关信息;                     *\n");
    printf("*      3. 给定一个学生信息,插入到表中指定的位置;                 *\n");
    printf("*      4. 删除指定位置的学生记录;                                 *\n");
    printf("*      5. 退出。                                                   *\n");
    printf("********************************************************************\n");
    printf("\n"); 
    while(select)
    {
        printf("请选择你要操作的选项:");
        scanf("%d",&select);
        printf("\n");
        switch(select)
        {
            case 1:
                
                printf("请输入学生的数量:"); 
                scanf("%d",&x);
                printf("\n");
                sum=x; 
                for(i=0;i<x;i++)
                {
                    printf("第%d位学生信息\n",i+1);
                    printf("\n");
                    printf("学号:");
                    scanf("%s",L.elem[i].no);
                    printf("姓名:");
                    scanf("%s",L.elem[i].name);
                    printf("数学成绩:");
                    scanf("%d",&L.elem[i].M);
                    printf("语文成绩:");
                    scanf("%d",&L.elem[i].Ch);
                    printf("英语成绩:");
                    scanf("%d",&L.elem[i].E);
                    printf("物理成绩:");
                    scanf("%d",&L.elem[i].P);
                    printf("化学成绩:");
                    scanf("%d",&L.elem[i].Ce);
                } 
                L.last=x;
                printf("\n");
                break;
                
            case 2:
                
                printf("所有学生的相关信息为:\n\n");
                for(i=0;iprintf("学号:%s 姓名:%s 数学成绩:%d 语文成绩:%d 英语成绩:%d 物理成绩:%d 化学成绩:%d\n\n\n\n\n\n",L.elem[i].no,L.elem[i].name,L.elem[i].M,L.elem[i].Ch,L.elem[i].E,L.elem[i].P,L.elem[i].Ce);
                }
                printf("\n");
                break;

            case 3:
                
                printf("请输入你要插入的位置:");
                scanf("%d",&a);
                printf("请输入插入学生信息:\n");
                printf("学号:");
                scanf("%s",m.no);
                printf("姓名:");
                scanf("%s",m.name);
                printf("数学成绩:");                                                                                
                scanf("%d",&m.M);
                printf("语文成绩:");
                scanf("%d",&m.Ch);
                printf("英语成绩:");
                scanf("%d",&m.E);
                printf("物理成绩:");
                scanf("%d",&m.P);
                printf("化学成绩:");
                scanf("%d",&m.Ce);
                if(InsList(&L,a,m))
                {
                    sum++;
                    printf("插入成功!\n\n"); 
                }
                else
                    printf("插入失败!\n\n");
                break;
                
            case 4:
                
                printf("请输入要删除学生的位置:");
                scanf("%d",&c);
                if(DelList(&L,c))
                {
                    sum--;
                    printf("删除成功!\n\n");
                }
                else
                    printf("删除失败!\n\n");
                break;

            case 5:
                {
                    printf("\n退出系统成功!请按任意键结束!\n");
                    exit(0);
                }
                break;         
        } 
    }
    return 0;
} 


运行结果及详细报错内容
我的解答思路和尝试过的方法,不写自己思路的,回答率下降 60%
我想要达到的结果,如果你需要快速回答,请尝试 “付费悬赏”
int select;
while(select)

select 没有初始化,是一个随机值,如果产生的随机值是0,那么就不会进入循环了。这里应该要用死循环的,修改如下:

while(select)
改为:
while(1)

img


这个select没有初始化

我试了一下可以正常运行,你再重新打开看看

img

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632