标题:求助,这个do-while循环为啥不能循环啊
只看楼主
zzk93615
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2013-3-25
 问题点数:0 回复次数:11 
求助,这个do-while循环为啥不能循环啊
//计算平均数
#include <stdio.h>
#include <ctype.h>
int main(void)
{
    int number = 0;
    int sum = 0;
    int count = 0;
    char choice = 'n';
    float average = 0.0f;
   
    printf("请输入一个整数:");
    scanf("%d",&number);
    do
    {
        count++;
        sum = sum + number;
        printf("现在您一共输入了%d个数字,总值为%d.",count,sum);
        printf("\n请问是否要继续输入(YorN):");
        scanf("%c",&choice);
    }
    while(tolower(choice)=='y');

    average = sum/count;

    printf("\n您总共输入了%d个数字,总值为%d。\n平均值为%f",count,sum,average);
    return 0;
}
      
//为啥他不让我输入choice的值就直接结束循环了啊



PS.怎么结贴。。莫非是管理员帮忙?


[ 本帖最后由 zzk93615 于 2013-3-25 21:57 编辑 ]
搜索更多相关主题的帖子: void 计算 average include number 
2013-03-25 21:10
zzk93615
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2013-3-25
得分:0 
回复 楼主 zzk93615
PS.大概看了下大家发的帖子...只能看懂一点点。。刚看到数组的小菜鸟一只%>_<%
2013-03-25 21:15
zqllsszhuqi
Rank: 2
等 级:论坛游民
帖 子:26
专家分:45
注 册:2010-3-29
得分:0 
#include <stdio.h>
#include <ctype.h>
int main(void)
{
    int number = 0;
    int sum = 0;
    int count = 0;
    char choice = 'n';
    float average = 0.0f;
   
    printf("请输入一个整数:");
    scanf("%d",&number);
    do
    {
        count++;
        sum = sum + number;
        printf("现在您一共输入了%d个数字,总值为%d.",count,sum);
        printf("\n请问是否要继续输入(YorN):");
        scanf("%c",&choice);
        scanf("%c",&choice);
    }
    while(tolower(choice)=='y');

    average = sum/count;

    printf("\n您总共输入了%d个数字,总值为%d。\n平均值为%f",count,sum,average);
    return 0;
}
 
当你输入一个数字时,就要回车, 而这条语句scanf("%c",&choice);就把回车的字符入读到choice,所以多用一个scanf语句把回车吃掉就可以了
2013-03-25 21:23
abc594986308
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:168
专家分:116
注 册:2013-3-18
得分:0 
你这代码乱七八糟,毫无章法。真是怎么说呢?算了,学大神说句话,多看点书。
2013-03-25 21:26
韶志
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:斗气大陆
等 级:贵宾
威 望:44
帖 子:2223
专家分:13592
注 册:2013-3-22
得分:0 
printf("请输入一个整数:");      
 scanf("%d",&number);     //你的 scanf 函数要求键入时,你输入一个数,比如说:32  然后还要按一下回车键
    do
    {
        count++;
        sum = sum + number;
        printf("现在您一共输入了%d个数字,总值为%d.",count,sum);
        printf("\n请问是否要继续输入(YorN):");
        scanf("%c",&choice); //而此处的 scanf 就不会要求你继续输入了,因为它直接读入了你按的回车键,所以不会循环
    }
    while(tolower(choice)=='y');

三十年河东,三十年河西,莫欺少年穷!
2013-03-25 21:29
zzk93615
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2013-3-25
得分:0 
回复 3楼 zqllsszhuqi
感谢!回头再开才发现问题很大。
2013-03-25 21:31
zzk93615
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2013-3-25
得分:0 
回复 4楼 abc594986308
抱歉啊,才看了两个多礼拜的书。很多东西都不懂,请多包涵啊
2013-03-25 21:34
韶志
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:斗气大陆
等 级:贵宾
威 望:44
帖 子:2223
专家分:13592
注 册:2013-3-22
得分:0 
回复 3楼 zqllsszhuqi
你的程序没能理解楼主的意思

三十年河东,三十年河西,莫欺少年穷!
2013-03-25 21:36
韶志
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:斗气大陆
等 级:贵宾
威 望:44
帖 子:2223
专家分:13592
注 册:2013-3-22
得分:0 
#include <stdio.h>
#include <ctype.h>
int main(void)
{
    int number = 0;
    int sum = 0;
    int count = 0;
    char choice = 'n';
    float average = 0.0f;
   
   
    do
    {
       printf("请输入一个整数:");
        scanf("%d",&number);   
//scanf 函数一定要套在 do 循环里面,不然怎么循环输入数据
        count++;
        sum = sum + number;
        printf("现在您一共输入了%d个数字,总值为%d.",count,sum);
        printf("\n请问是否要继续输入(YorN):");
        fflush(stdin);         //用来接收换行符(回车)
        scanf("%c",&choice);
    }
    while(tolower(choice)=='y');

    average=(float)sum/count;  //要强制转换类型,不然输出的总是整型,因为式子中含有整型数据

    printf("\n您总共输入了%d个数字,总值为%d。\n平均值为%f\n",count,sum,average);
    return 0;
}

三十年河东,三十年河西,莫欺少年穷!
2013-03-25 21:40
zzk93615
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2013-3-25
得分:0 
回复 楼主 zzk93615
感谢各位的热心!!
我本来想求所有输入数字的平均数,结果好像逻辑出了很大问题。
为什么不能循环的问题已经解决了,我再去想想要怎么写。感谢各位了!
新人第一次来论坛,请多指教!
2013-03-25 21:41



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




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

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