| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 864 人关注过本帖
标题:关于scanf()的问题?
只看楼主 加入收藏
Agdmeg
Rank: 4
来 自:四川成都
等 级:业余侠客
威 望:3
帖 子:101
专家分:201
注 册:2011-8-9
结帖率:92.31%
收藏
已结贴  问题点数:20 回复次数:13 
关于scanf()的问题?
程序如下:
  #include"stdio.h"
  int main()
  {
  float x,y;
  char c;
  printf("Please enter x:\n");
  scanf("%f",&x);
  printf("Please enter y:\n");
  scanf("%f",&y);
  printf("x+y=%f\n",x+y);
  printf("\n");
  scanf("%c",&c);
  if((c!='q')||(c!='Q'))
  {
  main();
  }
  return 0;
  }   
为什么每当我输入变量x后,再输入变量y,点击enter键后,屏幕显示x+y的值后程序没有让我输入字符变量c的值,而是直接再次要求输入x,输入后再输入y点击确定后屏幕显示x+y后又是没有让我输入c的值,又要求输入x,不断这样重复,我明明在显示x+y后是要求输入字符变量c的值并判断的,为什么始终都没要求输入c的值。
搜索更多相关主题的帖子: include return 
2012-01-01 23:36
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:0 
你写的什么代码?能把每一行都解释一下吗?

总有那身价贱的人给作业贴回复完整的代码
2012-01-01 23:42
Agdmeg
Rank: 4
来 自:四川成都
等 级:业余侠客
威 望:3
帖 子:101
专家分:201
注 册:2011-8-9
收藏
得分:0 
回复 2楼 embed_xuel
就是一个很简单的C语言程序
2012-01-01 23:46
Agdmeg
Rank: 4
来 自:四川成都
等 级:业余侠客
威 望:3
帖 子:101
专家分:201
注 册:2011-8-9
收藏
得分:0 
编译也是通过了的,用的是gcc编译的
2012-01-01 23:47
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:0 
回复 3楼 Agdmeg
叫你加注释是有原因的,你先加注释

总有那身价贱的人给作业贴回复完整的代码
2012-01-01 23:48
Agdmeg
Rank: 4
来 自:四川成都
等 级:业余侠客
威 望:3
帖 子:101
专家分:201
注 册:2011-8-9
收藏
得分:0 
不是我不加,是因为我现在用手机上网的,不太方便
2012-01-01 23:52
Agdmeg
Rank: 4
来 自:四川成都
等 级:业余侠客
威 望:3
帖 子:101
专家分:201
注 册:2011-8-9
收藏
得分:0 
问一下:scanf("%c",&c);
这句是不是要写成scanf("%c",c);
很久没写过C程序了,有些都忘了
2012-01-01 23:54
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:20 
scanf("%c", &c);
读入的是换行符。回车虽然是输入结束,但本身也将换行符写入输入流
另外if((c!='q')||(c!='Q'))逻辑错误,任何时候条件都为真。应写成if((c!='q')&&(c!='Q'))
换一种读法
程序代码:
#include"stdio.h"
int main()
{
    float x,y;
    char c[8];
    printf("Please enter x:\n");
    scanf("%f",&x);
    printf("Please enter y:\n");
    scanf("%f",&y);
    printf("x+y=%f\n",x+y);
    printf("\n");
    scanf("%s",&c);
    if((c[0]!='q')&&(c[0]!='Q'))
    {
        main();
    }
    return 0;
} 

重剑无锋,大巧不工
2012-01-02 00:28
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
复制粘贴后编译出这个
图片附件: 游客没有浏览图片的权限,请 登录注册

梅尚程荀
马谭杨奚







                                                       
2012-01-02 10:21
小蝦米
Rank: 2
等 级:论坛游民
帖 子:38
专家分:88
注 册:2011-12-18
收藏
得分:0 
正如8楼所说,你输入了两个数字后的回车被当作字符读进去了,所以直接喊你重新输入两个数字
2012-01-02 12:17
快速回复:关于scanf()的问题?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018243 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved