标题:有关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: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册: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



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-387595-1-1.html




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

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