为什么输入完第一个学生信息后,程序就关了

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
struct XX{
    int xh;
    char xm[10];
    int cj[3];
};
struct XX x1[30];
void in()
{
    int x,y;
    printf("请输入需要录入总学生人数:");
    scanf("%d",&y);
    for(x=0;x<y;x++){
        printf("录入信息' '隔开\n学号\t姓名\t语文成绩\t数学成绩\t英语成绩\n");
        scanf("%d %s %d %d %d",x1[x].xh,x1[x].xm,x1[x].cj[1],x1[x].cj[2],x1[x].cj[3]);
        
    }
}int menu(){
    int a;
    printf("\n------------------------------------\n");
    printf("\t1.录入学生信息。\n\t2.读取学生数据。\n");
    printf("\t3.按学号查询学生。\n\t4.求学生平均成绩。\n");
    printf("\t5.输出平均分大于80分的学生。\n\t0.退出。\n");
    printf("\n------------------------------------\n");
    scanf("%d",&a);
    return a;
    
}int main(){
    int a,c = 1;
    while(c){
        a = menu();
        switch(a){
        case 1:in();
            system("cls");
            break;
        case 2:
            //struct xx x;             
            //for(c=0;b<=c;c++)             
            printf("\t姓名:%s\t学号:%d\t语文:%d\t数学:%d\t英语:%d\n",x1[c].xm,x1[c].xh,x1[c].cj[1],x1[c].cj[2],x1[c].cj[3]);
            break;
        case 3:system("cls");
            break;
        case 4:system("cls");
            break;
        case 5:system("cls");
            break;
        case 0:c=0; break;         
        }     
        }
        }

in()函数里面的scanf有两个问题:

第一个:scanf里面的变量没有加 & 符号,

第二个,成绩的数组下标应该从0开始

修正后的代码:scanf("%d %s %d %d %d",&x1[x].xh,&x1[x].xm,&x1[x].cj[0],&x1[x].cj[1],&x1[x].cj[2]);

 

printf("录入信息' '隔开\n学号\t姓名\t语文成绩\t数学成绩\t英语成绩\n");
scanf("%d %s %d %d %d",x1[x].xh,x1[x].xm,x1[x].cj[1],x1[x].cj[2],x1[x].cj[3]);

scanf这一句,变量前面需要加&,另外,数组大小是从0开始,应该是:

scanf("%d %s %d %d %d",&x1[x].xh,x1[x].xm,&x1[x].cj[0],&x1[x].cj[1],&x1[x].cj[2]);

注意x1[x].xm前面不需要加&。

如有帮助,请采纳一下,谢谢。

scanf("%d %s %d %d %d",x1[x].xh,x1[x].xm,x1[x].cj[1],x1[x].cj[2],x1[x].cj[3]);

改成:scanf("%d %s %d %d %d",&x1[x].xh,x1[x].xm,&x1[x].cj[0],&x1[x].cj[1],&x1[x].cj[2]);

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632