首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

C语言的一个循环有关问题

2012-06-05 
C语言的一个循环问题void main(){while(1){printf(请选择一个操作:\n)printf(创建成绩单(c)\t添加学生

C语言的一个循环问题
void main()
{
while(1)
{
printf("请选择一个操作:\n");
printf("创建成绩单(c)\t添加学生(a)\t排序(t)\n显示成绩(p)\n\n\n");

switch(getchar())
{
case 'c':Creat();break;
case 'a':Add();break;
case 'p':Disp();break;
default:printf("输入有误,请重新选择:\n");
}
}
}
我的本意是比如输入p,调用完Disp()之后,重新列出选择菜单,但实际上,第二次循环没有要求你输入,而是列出菜单之后直接跳到default,然后第三次循环才正常接收输入,请问这是咋回事?(运行结果如下)



请选择一个操作:
创建成绩单(c) 添加学生(a) 显示成绩(p)


p
学号 姓名 数学 语文 英语 平均


请选择一个操作:
创建成绩单(c) 添加学生(a) 显示成绩(p)


输入有误,请重新选择:
请选择一个操作:
创建成绩单(c) 添加学生(a) 显示成绩(p)


[解决办法]
你每次输入数据的时候都会敲一个回车键,是不是?而getchar是不分别字符是什么类型的。当你输入第一个字符后,第二个字符就是敲的这个回车键了。
[解决办法]
while(1)
{
printf("请选择一个操作:\n");
printf("创建成绩单(c)\t添加学生(a)\t排序(t)\n显示成绩(p)\n\n\n");

switch(getchar())
{
case 'c':Creat();break;
case 'a':Add();break;
case 'p':Disp();break;
default:printf("输入有误,请重新选择:\n");
}

fflush(stdin);
}

热点排行