在整数数组中查找最小元素

时间:2018-12-03 18:37:04

标签: c

以下程序有什么问题?为什么它不返回我尝试实现的最小元素。请找出错误。请告诉我有关逻辑和语法的错误。

#include<stdio.h>
int ArrayMinimum(int a[], size_t size);
#define SIZE 9
int main()
{
    int a[SIZE];
    for (int i = 0; i < SIZE; i++)
    {
        a[i] = 1 + rand() % 99;
        printf("%d  ", a[i]);
    }
    printf("\n\nThe smallest number of the array is %d  \n", ArrayMinimum(a, SIZE));
}
int ArrayMinimum(int a[], size_t size)
{
    if (size == 1)
    {
        return a[0];
    }
    for (int i = 0; i <= size ; i++)
    {
        if (a[i] > a[i + 1])
        {
            int temp = a[i + 1];
            a[i + 1] = a[i];
            a[i] = temp;
        }
    }
    int b[] = { 0 };
    for (int y = 0; y < size; y++)
    {
        b[y] = a[y];
    }
    ArrayMinimum(b, size -1 );

}

3 个答案:

答案 0 :(得分:1)

您的函数已定义为返回int;如果且 {em> size == 1,它将返回一个整数值。

如果size具有另一个值,它将根本不返回任何东西!
第二条返回声明在哪里?

还有其他一些实质性问题,例如数组b的大小定义不正确,并且您在那里覆盖了内存。

答案 1 :(得分:0)

您没有将del df1['Name_nocomma'] del df2_out['Name_x'] del df2_out['Namy_y'] df2_out.rename({'Age_x': 'Age'}, axis=1, inplace=True) df2_out #outputs: Age Name 0 24 Brad Mans 1 32 Tony Jar 2 40 Sid Jones 3 65 Fred Smith 4 50 Alex Bot 放在文件的顶部,因此,假定您调用的函数接受未知数量的参数并返回int类型的值。这会导致不确定的行为。

Implicit declaration of functions srand, rand and system

同样,您的ArrayMinimum()是错误的.SIZE常数始终等于9,并且在此方法中传递并由size变量使用,因此它将永远无法满足此方法的'if'条件。您实现的BubbleSort机制也是错误的。您的代码只交换一次值。

使用这种方法查找数组的最小值:-

#include <stdlib.h>

答案 2 :(得分:0)

您的ArrayMinimum逻辑正在尝试对数组进行排序,并且存在逻辑问题,如果size> 1,则没有定义返回。

如果要返回最小值,则可以使用以下更简单的逻辑。

int ArrayMinimum(int a[], size_t size)
{
    int min = a[0];
    if (size == 1)
    {
        return a[0];
    }


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

}