CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

一个简单但又奇怪的问题,大家进来看看~!

楼主sumy(Sumy)2003-11-02 11:36:46 在 C/C++ / C语言 提问

程序如下:  
   
  #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

相关问题

  • 真是又简单又奇怪呀
  • 简单又奇怪的C问题?!
  • 奇怪又简单的问题
  • 奇怪又简单的问题
  • 一个简单又奇怪的问题!!!
  • 很简单但很奇怪的问题.
  • [求助]ASP中一极简单但又极为奇怪的错误!~
  • 50分请教又简单又奇怪的问题
  • 关于classwizard的简单而又奇怪的问题
  • 简单而又奇怪的问题,大家帮忙看一下!

关键词

  • 字符
  • 用户
  • 输入
  • getchar
  • 错误
  • please input again
  • goto error
  • 应该
  • printf

得分解答快速导航

  • 帖主:sumy
  • 021850524

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo