missofme 2022-12-17 01:36 采纳率: 100%
浏览 14
已结题

关于#c++#中输入内容后回车无法继续执行后面指令的问题,如何解决?

请问各位老哥,我在用vc++6.0尝试模仿网上的写学生信息管理系统的程序,写完后预编译没有什么bug,但是在实际运行中,在执行输入信息时,输入完选修成绩后回车,程序就没反应了,过一段时间后程序就闪退了。

void add()
{
    int i=n,j,flag,m=0;            //i为任意时刻的学生人数 
    printf("\n请输入待增加的学生人数:\n");
    scanf("%d",&m);
    if(m>0) 
    {
        do  {
            flag=1;
            while (flag)
                {
                    flag=0;
                    printf("请输入第%d位学生的学号:\n",i+1);        //从第一位开始计数,stu[]从零开始,需要加1
                    scanf("%s",stu[i].num);
                    for(j=0;j<i;j++) 
                    {
                        if(strcmp(stu[i].num, stu[j].num)==0)        //判断学号是否重复
                        {
                            printf("该学号已经存在,请重新输入\n");
                            flag=1;
                            break;
                        }
                    }
                }
                printf("请输入当前第%d个学生姓名:",i+1);
                getchar();//处理上面输入的换行符
                scanf("%s",stu[i].stuname);
                printf("请输入当前第%d个学生选修课成绩:\n",i+1);
                scanf("%f",stu[i].xuan);
                printf("请输入当前第%d个学生实验课成绩:\n",i+1);
                scanf("%f",stu[i].expe);
                printf("请输入当前第%d个学生必修课成绩:\n",i+1);
                scanf("%f",stu[i].requ);
                stu[i].sum=stu[i].xuan+stu[i].expe+stu[i].requ;
                printf("该学生总分为:%f",stu[i].sum);
                i++;
            }
        while(i<n+m);        //如果输入的人数未达到前面所填人数,继续添加
    }
    n+=m;                //填完信息后,已存储的总人数增加
    printf("-信息已存储。");
    system("pause");
}

上面这是被调用的子函数,输入前面的人数,学号后按回车都没问题,但是在输入选修课成绩,按下回车后,程序就没反应了,过一段实际出现press any key to contine,再按键就程序关闭了,我感觉像是因为有回车符残留在缓冲区?如果是,似乎可以用getchar()清空残余数据,所以我在第一个printf函数下面加了个getchar函数,但是没用。后生恳请各位老哥解答

img

  • 写回答

2条回答 默认 最新

  • qzjhjxj 2022-12-17 17:31
    关注

    这几句成绩输入的语句里,参数前缺了'&'符,修改如下,供参考:

    printf("请输入当前第%d个学生选修课成绩:\n",i+1);
    scanf("%f",&stu[i].xuan);  //scanf("%f",stu[i].xuan); 修改
    printf("请输入当前第%d个学生实验课成绩:\n",i+1);
    scanf("%f",&stu[i].expe);  //scanf("%f",stu[i].expe); 修改
    printf("请输入当前第%d个学生必修课成绩:\n",i+1);
    scanf("%f",&stu[i].requ);  //scanf("%f",stu[i].requ); 修改
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 2月22日
  • 已采纳回答 2月14日
  • 创建了问题 12月17日

悬赏问题

  • ¥15 netty整合springboot之后自动重连失效
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击