程序为什么没有运行完就结束了

但是当我运行输入信息的时候,显示到性别后就结束运行了,怎么回事

img

应该是因为读取字符使用了%s而导致读取数据出错了,把性别字段改为字符数组即可,其他字段也可以改为字符数组,或者可以把对应的scanf里面的%s改为%c(但需要在读取字符后把输入的换行符等多余字符读走),以对应相应字段为字符数据类型,下面的例子把字符字段改为了字符数组,修改如下:

#include <stdio.h>

struct student{
    int num,age;
    char name[10000];
    char jg[20];
    char sex[10];
    char zy[20];
    char bj[20];
    char xb[20];
}; 

int main(void){
    
    int n,i;
    printf("请输入操作学生人数:");
    scanf("%d",&n);
    struct student stu[n];
    
    printf("对应顺序输入一下信息即可\n");
    for(i=0;i<n;i++){
        printf("姓名:");
        scanf("%s",stu[i].name);
        printf("学号:");
        scanf("%d",&stu[i].num);
        printf("性别:");
        scanf("%s",stu[i].sex);
        printf("年龄:");
        scanf("%d",&stu[i].age);
        printf("籍贯:");
        scanf("%s",stu[i].jg);
        printf("系别:");
        scanf("%s",stu[i].xb);
        printf("专业班级:");
        scanf("%s",stu[i].bj); 
        printf("\n");
    }
    printf("输入的信息如下:\n");
    for(i=0;i<n;i++){
        printf("姓名:");
        printf("%s",stu[i].name);
        printf(",学号:");
        printf("%d",stu[i].num);
        printf(",性别:");
        printf("%s",stu[i].sex);
        printf(",年龄:");
        printf("%d",stu[i].age);
        printf(",籍贯:");
        printf("%s",stu[i].jg);
        printf(",系别:");
        printf("%s",stu[i].xb);
        printf(",专业班级:");
        printf("%s\n",stu[i].bj); 
    }
     
} 

img

你性别的scanf后面的结构体变量前少了个&,结构体不像数组,它是需要&的