请问各位老哥,我在用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函数,但是没用。后生恳请各位老哥解答