| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 361 人关注过本帖
标题:有关for循环的问题,求解。
只看楼主 加入收藏
w470913537k
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2012-10-29
结帖率:77.78%
收藏
已结贴  问题点数:18 回复次数:2 
有关for循环的问题,求解。
#include <stdio.h>
#include <ctype.h>

int main (void)
{
    char answer='N';
    double total=0.0;
    double value=0.0;
    int count=0;
    printf("This program calculates the average of any number of values.");
    for ( ; ; )
    {
        printf("\nEnter a value:");
        scanf("%lf",&value);
        total+=value;
        ++count;

        printf("Do you want to enter another value?(Y or N):");
        scanf("%c",&answer);

        if (tolower(answer)=='n')
            break;
    }
    printf("\nThe average is %.2lf\n",total/count);
    return 0;
}
这个是《C语言入门经典》p139的试试看:最小for循环的程序代码
我编译上去以后发现出现这个结果:Do you want to enter another value ?(Y or N):
                                Enter a value:
也就是说,我还没有输入y或者n,他就直接让我输入一个数了。
如果我注释掉for循环中前四行代码,运行程序总是会出现两次Do you want to enter another value ?(Y or N):

我找了很久就是不知道问题到底出现在哪里了,求解。
搜索更多相关主题的帖子: double total another average include 
2012-11-19 18:42
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:18 
在2条SCANF语句之间
插入一条    fflush(stdin);//清空缓冲区 即可

DO IT YOURSELF !
2012-11-19 18:59
w470913537k
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2012-10-29
收藏
得分:0 
回复 2楼 wp231957
我用了scanf("%c",&a);在一个scanf之后。现在明白了,是缓存区里多个回车的字符,要吃掉那个回车,谢谢啊。。。
用清除缓存的办法也好。
2012-11-19 19:14
快速回复:有关for循环的问题,求解。
数据加载中...
 
   



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

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