【问题标题】:4 Functions find lowes/highest position and value4 函数找到最低/最高位置和价值
【发布时间】:2017-09-29 21:53:26
【问题描述】:

我没有得到正确的价值观,我错过了什么?我的另一台 PC 上有类似的代码,它似乎可以工作。已经分析了几个小时,据我所见,一切看起来都很好,但我肯定错过了一些东西。 我得到最大数量 = 22,最大位置 = 0,最小数量 = 22,最小位置 = 2

#include <stdio.h>

int findMaxPos(int *numbers, int length);
int findMinPos(int *numbers, int length);

int findMax(int *numbers, int length);
int findMin(int *numbers, int length);

int main()
{
    int arr[] = { 100, 50, 20, 35 , 25, 22};

    printf("Max number = %d\nMax pos = %d\nMin number = %d\nMin position = %d", findMax(arr, 6), findMaxPos(arr, 6), findMin(arr, 6), findMinPos(arr, 6));
    getchar();

    return 0;
}

int findMaxPos(int *numbers, int length) {
    int maxPos = 0;

    for (int i = 0; i < length; i++)
    {
        if (numbers[i] > numbers[maxPos])
            maxPos = i;
    }
    return maxPos;
}

int findMinPos(int *numbers, int length)
{
    int minPos = 0;

    for (int i = 0; i < length; i++)
    {
        if (numbers[i] < numbers[minPos])
            minPos = i;
    }

    return minPos;
}

int findMax(int *numbers, int length) {

    int maxNr = numbers[0];

    for (int i = 0; i < length; i++)
    {
        if (numbers[i] > maxNr);
        maxNr = numbers[i];
    }

    return maxNr;
}

int findMin(int *numbers, int length)
{
    int minNr = numbers[0];

    for (int i = 0; i < length; i++)
    {
        if (numbers[i] < minNr);
        minNr = numbers[i];
    }

    return minNr;
}

【问题讨论】:

  • 看看那个额外的分号:if (numbers[i] &lt; minNr); 有效地表示:如果数字小于当前的最小值。数字,什么都不做

标签: c arrays function max min


【解决方案1】:

findMaxfindMin 中的if 之后有一个额外的;

if (numbers[i] > maxNr);

删除;

if (numbers[i] > maxNr)

【讨论】:

  • 最大位置为 0,最小位置为 2
  • @Cutik :您的 findMaxPosfindMinPos 函数没有相同的问题(没有额外的 ;),因此它们返回正确的(预期的)结果:数组(100)在位置 0,最小的数(20)在位置 2。
【解决方案2】:

数组位置从 [0] 开始,所以你的 Max position 和 Min Position 是正确的:

Numbers[0] = 100

Numbers[2] = 20

对于最大数量和最小数量,正如 Sander De Dycker 所说,您只需在 findMaxfindMin 函数中的 if 语句末尾删除额外的 ;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-22
    • 1970-01-01
    • 2022-01-04
    • 2020-01-28
    • 2017-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多