【问题标题】:finding minimum value of an array找到数组的最小值
【发布时间】:2013-04-08 06:38:43
【问题描述】:

据我所知,我应该得到数组的最小值,但我得到的却是一个很大的负数,它在我的数组中不存在。

int size;
size = sizeof(array) / sizeof(array[0]);

int min;
min = array[0];

for(int i = 1; i <= size; i++) {
    if(array[i] < min){
        min = array[i];
    }
}

但由于某种原因,我得到了一个很大的负数:-9.25596e+061

【问题讨论】:

    标签: c++ arrays min


    【解决方案1】:
    for(int i = 1; i <= size; i++) {
                    //^^^^array index out of bound, since array index starts from 0
       if(array[i] < min){
          min = array[i];
       }
    }
    

    您应该只比较数组中的元素。您试图访问不属于该数组的内存,因此该内存中有奇怪的值。

    您的代码应如下所示:

    int min = array[0];
    for(int i = 1; i < size; i++) {
       if(array[i] < min){
          min = array[i];
       }
    }
    

    【讨论】:

    • 详细来说,C数组是从0开始索引的,而不是1,所以第一个元素在[0],最后一个元素在[length-1]
    • 大声笑谢谢有一个愚蠢的时刻......我已经连续编码了 8 小时。
    • @tacp 你能帮我处理我的平均计算器循环吗,由于某种原因,我再次得到一个负数,就像之前应该出现的那样
    【解决方案2】:

    在进行比较时,&lt;= size 表示您将 1 迭代到数组的末尾。它很可能会获得一些非常巨大的垃圾价值,这将成为最低限度。

    使用for (int i = 1; i &lt; size; ++i) { /* ... */ } 获取您需要的内容。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-04
      • 2021-01-08
      • 2013-03-30
      • 1970-01-01
      • 1970-01-01
      • 2019-11-20
      • 2011-08-01
      相关资源
      最近更新 更多