一个简单但又奇怪的问题,大家进来看看~!
程序如下:
#include <stdio.h>
main(){
char a;
error:
a=getchar();
if (a<49||a>53) {printf("Please input again:");goto error}
else {printf("Right");}
}
本来我是想让用户输入一个1-5之间的数字,错的话输出Please input again,然后让用户重新输入。
但结果却是,当用户输入错误的时候,输出的却是:
Please input again:Please input again:
也就是出现了两次错误的提示,为什么会这样的呢?如何解决?谢谢!
问题点数:40、回复次数:4Top
1 楼sumy(Sumy)回复于 2003-11-02 11:38:29 得分 0
不好意思,上面有一句漏了分号,“goto error”应该是"goto error;"
但我问的问题的原因和这个小错误无关。Top
2 楼021850524(吸血鬼牌卫生巾)回复于 2003-11-02 11:42:56 得分 40
当你输入一个字母getchar函数得到的是一个字母和一个回车
所以第二次又让你输入Please input again:
正确的办法如下:
#include <stdio.h>
main(){
char a,c;
error:
a=getchar();
c= getchar();
if (a<49||a>53) {printf("Please input again:");goto error;}
else {printf("Right");}
}Top
3 楼sumy(Sumy)回复于 2003-11-02 11:45:01 得分 0
非常感谢!Top
4 楼njSeeWhy(北海鲲鹏)回复于 2003-11-02 11:51:43 得分 0
你按回车是,相当于多输入了一个ASCII字符10,如果你输入的数字在1到5之外,那么这个10会被下一个getchar()读到,所以第二次进入了你的判断,而且判断这个输入的字符也不是在1到5之间,所以会第二次输出错误信息。既然你是要输入整数,那就应该把a声明成整型变量呀,为什么要声明成字符型?而且你应该用scanf来读入数据比较好一点吧。Top




