G帅T 2023-03-03 11:45 采纳率: 76%
浏览 36
已结题

C语言循环和输入问题当输入文字时死循环

img


当我输入数字在专业那里的时候不会死循环,当输入文字的时候死循环

void cun(){
     int y;
     printf("输入你的学号:");
     scanf("%d",&y);
     while(y){ 
   printf("输入你的名字:");
   scanf("%s",stu[y].name); 
   printf("输入你的身份证号码:"); 
   scanf("%6d%4d%4d%2d%1d%1d",&stu[y].id1,&stu[y].id2,&stu[y].id3,&stu[y].id4,&stu[y].id5,&stu[y].id6);
   printf("输入你的生日:");
   scanf("%d%d",&stu[y].birthday.month,&stu[y].birthday.day );
   printf("输入你的联系电话:"); 
   scanf("%c\n",&stu[y].dianhua[11]);printf("输入你的班级:");

   scanf("%s\n",stu[y].grade);

   printf("输入你的专业:");

   scanf("%s\n",stu[y].zhuanye );
   printf("输入你的综测成绩:");
   scanf("%d\n",&stu[y].score);
   printf("返回主界面\n");
   main();    
    }
}```

int main(){

page();

int x;
scanf("%d",&x);
while(1){
    switch(x)
        {
case 1:
     cha();break;//查询信息区域 
        case 2:
          cun();break;//存入信息区域 
            case 3:
              shan();break;//删除信息区域
                case 4:
                 lie();break;//列出信息区域 
                    default:printf("输入的信息编号有误");
        } 
        }

}```

  • 写回答

3条回答 默认 最新

  • 社区专家-Monster-XH 2023-03-03 12:57
    关注

    基于Monster 组和GPT的调写:
    死循环可能是由于使用scanf()函数读取字符串时的格式化错误导致的。在读取字符串时,您不需要使用\n作为格式控制符,因为%s格式控制符自动跳过前导空格,并在遇到下一个空格或新行时停止读取。因此,使用%s而不是%s\n应该解决问题。以下是修改后的cun()函数的代码:

    void cun() {
        int y;
        printf("输入你的学号:");
        scanf("%d", &y);
        while (y) {
            printf("输入你的名字:");
            scanf("%s", stu[y].name);
            printf("输入你的身份证号码:");
            scanf("%6d%4d%4d%2d%1d%1d", &stu[y].id1, &stu[y].id2, &stu[y].id3, &stu[y].id4, &stu[y].id5, &stu[y].id6);
            printf("输入你的生日:");
            scanf("%d%d", &stu[y].birthday.month, &stu[y].birthday.day);
            printf("输入你的联系电话:");
            scanf("%s", stu[y].dianhua);
            printf("输入你的班级:");
            scanf("%s", stu[y].grade);
            printf("输入你的专业:");
            scanf("%s", stu[y].zhuanye);
            printf("输入你的综测成绩:");
            scanf("%d", &stu[y].score);
            printf("返回主界面\n");
            main();
        }
    }
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 3月11日
  • 已采纳回答 3月3日
  • 修改了问题 3月3日
  • 创建了问题 3月3日

悬赏问题

  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)
  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?