| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3857 人关注过本帖
标题:我写的scanf为什么要输入两次?
只看楼主 加入收藏
chinagdvea
Rank: 2
等 级:论坛游民
帖 子:38
专家分:10
注 册:2009-11-5
结帖率:60%
收藏
已结贴  问题点数:20 回复次数:8 
我写的scanf为什么要输入两次?
代码如下 是一个检查质数的代码

#include<stdio.h>

int main(void)
{
    int num,i;
    bool isprime=true;
    printf("input a number,enter q to quit.\n");
    while(scanf("%d",&num)==1)
    {
        if(num==1)
            printf("1 is not a prime and also not a composite.\n");
        else
        {
            for(i=2;i*i<=num;i++)
            {
                if(num%i==0)
                {
                    if(i!=num/i)
                        printf("%d is devisible by %d and %d.\n",num,i,num/i);
                    else printf("%d is devisible by %d\n",num,i);
                    isprime=false;
                }
            }
            if(isprime)
                printf("%d is a prime\n.",num);
            printf("now input another number\n");
            scanf("%d",&num);
        }
    }
    printf("Bye\n");
    return 0;
}


第一次输入一次即可,但后面就要输入两次才有响应

   

 

[ 本帖最后由 chinagdvea 于 2009-11-5 10:56 编辑 ]
搜索更多相关主题的帖子: 输入 scanf 
2009-11-05 10:54
pgy
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:C
等 级:小飞侠
威 望:8
帖 子:1248
专家分:2329
注 册:2009-9-23
收藏
得分:20 
scanf("%d",&num)除了循环结束有一个,循环判断的while也有一个scanf("%d",&num);

我可好玩啦...不信你玩玩^_^
2009-11-05 10:55
chinagdvea
Rank: 2
等 级:论坛游民
帖 子:38
专家分:10
注 册:2009-11-5
收藏
得分:0 
回复 2楼 pgy
哦,对哦,悲剧。。。

It's not a joke
2009-11-05 10:56
dengjun000
Rank: 2
等 级:论坛游民
帖 子:66
专家分:77
注 册:2009-10-14
收藏
得分:0 
while(scanf("%d",&num)==1)
能介绍下这句是什么意思吗? 我不怎么懂啊?
2009-11-05 11:21
pgy
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:C
等 级:小飞侠
威 望:8
帖 子:1248
专家分:2329
注 册:2009-9-23
收藏
得分:0 
回复 4楼 dengjun000
判断输入数是否等于1

我可好玩啦...不信你玩玩^_^
2009-11-05 11:25
chinagdvea
Rank: 2
等 级:论坛游民
帖 子:38
专家分:10
注 册:2009-11-5
收藏
得分:0 
回复 3楼 chinagdvea
用来判断 输入成功的项目个数
  scanf有返回值的,比如成功输入一个整型,返回1 ,成功输入两个,则返回2

It's not a joke
2009-11-05 11:30
pgy
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:C
等 级:小飞侠
威 望:8
帖 子:1248
专家分:2329
注 册:2009-9-23
收藏
得分:0 
回复 6楼 chinagdvea
不同的编译器scanf的返回值不同
    fflush(stdin) 不同编译器可能不支持

我可好玩啦...不信你玩玩^_^
2009-11-05 11:34
d7d7
Rank: 4
等 级:业余侠客
帖 子:91
专家分:210
注 册:2008-9-29
收藏
得分:0 
意思是说这种写法不好吧,也很少见的,建议不要这样写,成功输入一个整数,直接判断是不是null就可能用了嘛
2009-11-05 11:59
lijm1989
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:珠海
等 级:贵宾
威 望:12
帖 子:675
专家分:2844
注 册:2009-10-14
收藏
得分:0 
是这样么??这个用法挺好的也挺常见的吧,scanf 函数的返回值反映的是按照指定的格式符正确读入的数据的个数,不然输入多个的时候你怎么知道有几个成功了??
我用过的编译器的scanf的返回值都是这样的,也没听过有不是这样的···学习中···
2009-11-05 14:25
快速回复:我写的scanf为什么要输入两次?
数据加载中...
 
   



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

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