m0_75048134 2023-01-08 01:51 采纳率: 100%
浏览 45
已结题

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

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

img

  • 写回答

2条回答 默认 最新

  • a5156520 2023-01-08 10:44
    关注

    应该是因为读取字符使用了%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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 1月16日
  • 已采纳回答 1月8日
  • 创建了问题 1月8日

悬赏问题

  • ¥15 关于大棚监测的pcb板设计
  • ¥20 sim800c模块 at指令及平台
  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器
  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
  • ¥15 Vue3地图和异步函数使用
  • ¥15 C++ yoloV5改写遇到的问题
  • ¥20 win11修改中文用户名路径
  • ¥15 win2012磁盘空间不足,c盘正常,d盘无法写入
  • ¥15 用土力学知识进行土坡稳定性分析与挡土墙设计