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

关于#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 09: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月21日
  • 已采纳回答 2月14日
  • 创建了问题 12月16日

悬赏问题

  • ¥15 Open GL ES 的使用
  • ¥15 有人说Java多线程性质是非计算机科班硕士不懂的?
  • ¥15 我如果只想表示节点的结构信息,使用GCN方法不进行训练可以吗
  • ¥15 GPTs营销指令提示词和创建方案
  • ¥15 QT6将音频采样数据转PCM
  • ¥15 本地安装org.Hs.eg.dby一直这样的图片报错如何解决?
  • ¥15 下面三个文件分别是OFDM波形的数据,我的思路公式和我写的成像算法代码,有没有人能帮我改一改,如何解决?
  • ¥15 Ubuntu打开gazebo模型调不出来,如何解决?
  • ¥100 有chang请一位会arm和dsp的朋友解读一个工程
  • ¥50 求代做一个阿里云百炼的小实验
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部