| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3427 人关注过本帖
标题:新人 关于如何结束一个do while()循环
只看楼主 加入收藏
bxe
Rank: 1
等 级:新手上路
帖 子:57
专家分:7
注 册:2019-3-21
结帖率:72.22%
收藏
已结贴  问题点数:15 回复次数:3 
新人 关于如何结束一个do while()循环
一道书上的习题答案,来源自网上
程序代码:
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    float number = 0.0f;
    float *pNumber = NULL;
    int count = 0;
    float sum = 0.0f;

    pNumber = (float*)malloc(sizeof(float));
    if(pNumber == NULL)
    {
        printf("内存分配失败\n");
        return 1;
    }
    do
    {
        scanf("%f", &number);
        count++;
        pNumber = realloc(pNumber,count*sizeof(float));

        *(pNumber + count - 1)=number;
    }while(number != 0.0);

    for(int i=0; i<count-1; i++)
    {
        sum += *(pNumber +i);
    }
    printf("平均值是 %f\n",sum/(count-1));

    free(pNumber);
    return 0;
}
习题7.1 编写一个程序,计算从键盘输入的任意个浮点数的平均值。将所有的数存储到动态分配的内存中,之后计算并显示平均值。用户不需要事先指定要输入多少个数。
本来试着自己写了下,结果完全做不来,还是抄了遍答案,
但这个有一个问题:比如要计算计算的数字中有0 ----“1.1 2.2 3.3 0 4.4 ”      
1,因为本人才看完指针,想问下有没有简单解决的办法。
之前书上的例子倒是有,存为单字符数组,之后一位一位查找并分别存储的例子,但是还要分配动态内存,似乎变得很麻烦(没有学明白)。
程序代码:
  if(input[index]=='+' || input[index]=='-')
                *(number_string+number_length++) = *(input+index++);
            for(; isdigit(*(input+index)); index++)
                *(number_string+number_length++) = *(input+index);
            if(*(input+index)=='.')
            {
                *(number_string+number_length++) = *(input+index++);
                for(; isdigit(*(input+index)); index++)
                    *(number_string+number_length++) = *(input+index);
            }
2,网上提供答案的这位,解决思路是否合适?不是指逻辑或是语法方面,是消减问题这种(忽略,没有直接要求的部分,或是小概率情况),因为我觉得第一段代码有取巧的意思,虽然只是个练习(之前100行的代码直接看得我蒙了好几天)。

预谢




[此贴子已经被作者于2019-4-19 03:24编辑过]

搜索更多相关主题的帖子: do float number input index 
2019-04-19 03:17
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
收藏
得分:8 
do while是“直到”型循环,就是一直到条件满足时退出循环,和while循环不同,while是“当”型循环,就是当条件满足时才循环。

能编个毛线衣吗?
2019-04-19 08:11
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9031
专家分:54061
注 册:2011-1-18
收藏
得分:8 
程序代码:
#include <stdio.h>

int main( void )
{
    size_t count = 0;
    double sum = 0.0;

    for( double val; scanf("%lf",&val)==1; ++count )
        sum += val;

    printf( "平均值是 %f\n", count==0 ? 0 : sum/count );
}

2019-04-19 08:37
bxe
Rank: 1
等 级:新手上路
帖 子:57
专家分:7
注 册:2019-3-21
收藏
得分:0 
回复 3楼 rjsp
厉害啊,又新鲜,又简单!
2019-04-20 01:01
快速回复:新人 关于如何结束一个do while()循环
数据加载中...
 
   



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

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