标题:for 循环函数的问题
只看楼主
cldttq2113
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2014-5-14
结帖率:100%
已结贴  问题点数:20 回复次数:12 
for 循环函数的问题
#include<stdio.h>
#include<ctype.h>
int main(void)
{
    int a = 0, total = 0, count = 0;
    char answer = 'n';
    for (;;)
    {
        printf("输入一个数字:");
        scanf_s("%d",& a);  
        total += a;
        ++count;
        printf("\n还要输入更多的数字吗?\n");
        scanf_s("%c", &answer);
        if (tolower(answer) == 'n')
        break;
        
    }
    printf("\n平均数为:%f", total / count);
    system("pause");
    return 0;
}


运行后出现

(printf("\n还要输入更多的数字吗?\n");)没选择就直接跳过了,这是什么情况?

用的vs2013,而且把C 语言门经典那道题的源代码放进去运行也是出现这种情况

[ 本帖最后由 cldttq2113 于 2014-5-14 22:09 编辑 ]
搜索更多相关主题的帖子: include system return 平均数 count 
2014-05-14 22:01
xiaozi2013
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:四川成都
等 级:蒙面侠
威 望:6
帖 子:830
专家分:4331
注 册:2013-12-13
得分:0 
莫清除缓存~~

--整天敲那些破代码能找着媳妇儿吗。。。---
2014-05-14 22:13
刘欣2
Rank: 1
等 级:新手上路
帖 子:32
专家分:6
注 册:2014-5-12
得分:0 
这个要实现什么
2014-05-14 22:32
funyh250
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:26
帖 子:290
专家分:1573
注 册:2013-12-25
得分:0 
加个clean()就OK了

学习是大事   吃喝拉撒睡是小事   其他的那都不是事
2014-05-14 22:41
CatherineZYR
Rank: 2
等 级:论坛游民
帖 子:5
专家分:25
注 册:2014-3-14
得分:0 
#include<stdio.h>
#include<ctype.h>
int main(void)
{
    int a = 0, total = 0, count = 0;
    char answer;
    for (;;)
    {
        printf("输入一个数字:");
        scanf("%d",& a);
        total += a;
        count++;
        printf("\n还要输入更多的数字吗?\n");
        fflush(stdin);//getchar();
        scanf("%c", &answer);
        if(answer!='y') break;
    }
    printf("\n平均数为:%f", (float)total / count);
    system("pause");
    return 0;
}
这样就好了
2014-05-14 23:05
CatherineZYR
Rank: 2
等 级:论坛游民
帖 子:5
专家分:25
注 册:2014-3-14
得分:0 
#include<stdio.h>
#include<ctype.h>
int main(void)
{
    int a = 0, total = 0, count = 0;
    char answer;
    for (;;)
    {
        printf("输入一个数字:");
        scanf("%d",& a);
        total += a;
        count++;
        printf("\n还要输入更多的数字吗?\n");
        fflush(stdin);//getchar();
        scanf("%c", &answer);
        if(answer!='y') break;
    }
    printf("\n平均数为:%f", (float)total / count);
    system("pause");
    return 0;
}
这样就好了
2014-05-14 23:08
top398
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:2
帖 子:427
专家分:857
注 册:2014-5-2
得分:0 
        scanf_s("%d",& a);
后跟一行:
        getchar();
2014-05-14 23:12
top398
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:2
帖 子:427
专家分:857
注 册:2014-5-2
得分:0 
gcc 版本(用 scanf 替换 scanf_s)未强制转换情况下
    printf("\n平均数为:%f\n", total / count);
输出一个错误的浮点值,而 VC 版本会出现一长串莫名其妙的数字。
2014-05-14 23:18
so_love
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:7
帖 子:812
专家分:4151
注 册:2013-11-25
得分:0 
是不是应该用getchar()读取多余的部分?也就是输入的“\n”

一花一世界、一叶一追寻、片片花叶落、情系何人身。
2014-05-15 09:53
rmbking
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:36
专家分:157
注 册:2014-3-19
得分:5 
!!!
没那么复杂,将之前的缓存输入清除掉就可以了。最简单的方法:
scanf中在%前加个空格就可以了。
如scanf(" %c",&answer);
2014-05-16 14:13



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




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

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