首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数组的平均值?

数组的平均值?
EN

Stack Overflow用户
提问于 2022-03-13 21:30:26
回答 1查看 64关注 0票数 0

任务说明:

,荷兰人用水坝征服了来自海洋的领土,不喜欢被这些水坝跨过波浪。一座旧水坝的修缮计划如下。A是在大坝前面的一个点测量波浪的高度,然后取波浪撞击的波浪(即高于当前大坝的波浪),这些波的平均高度将是新的坝高。例如,如果你有一个20米的大坝,在它前面测量到12,32,16,40,21米高的波浪,那么第2,4,5引脚,它们的​​值是32,40,21,平均值是(32 + 40 + 21) /3= 31,即新大坝必须是31米。编写一个计算新大坝高度的函数。第一个输入参数是一个完整的常设数组,其终止元素为0。这包含了波浪的高度。另一个输入参数是当前大坝高度,它是一个整数。函数是波的平均值的整数部分,高于屏障返回的值。如果没有波浪通过,该函数将返回原始大坝的高度。int平均(int输入[],int高度);

我的代码是:

代码语言:javascript
复制
int average(int input[], int height){
    int counter = 0;
    int added = 0;
    int average;

    for(int i = 0; input[i] != '0'; i++)
        if(input[i]>height) {
            added += input[i];
            counter++;
        }

    average = added/counter;

    return average;
}

问题是,当我运行代码时,我收到了以下错误消息:

进程完成出口代码-1073741819 (0xC0000005)

我已经调查了这个未经授权的内存使用情况,但我不知道是什么原因造成了这种情况。

多亏了你们,我得到了答案

代码语言:javascript
复制
if (counter != 0) {
        average = added / counter;
        return average;
    } else {
        return height;
    }

就是这样,我的问题是除以0。

EN

回答 1

Stack Overflow用户

发布于 2022-03-13 22:04:16

该数组具有所谓的哨兵值。(标志着结束的)特殊价值.它是一个0的值。但是你没有正确地测试它。

代码语言:javascript
复制
   for(int i = 0; input[i] != '0'; i++)

你的意思是

代码语言:javascript
复制
   for(int i = 0; input[i] != 0; i++)

为什么?

在C '0‘中是一个字符。字符将被视为整数在几乎所有放置在一个整数是预期的地方。但它是对字符的ASCII值的直接翻译。见这里https://www.asciitable.com/

您可以看到,字符“0”实际上是小数48,十六进制0x32,而不是0。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71461016

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档