打印数组的最小值和最大值

在查找数组中的最小值和最大值时遇到问题。

#include <stdio.h> 

int maximum(int array[],int n);
int minimum(int array[],int n);

int main() 
{ 
    int array[0];
    int count,i;
    printf("Enter the size of the array: ");
    scanf("%d",count);
    printf("Enter the elements of the array:\n");
    for (i = 0; i < count; i++) 
    {
        scanf("%d",&array[i]);
    }
    printf("Maximum: %d",maximum(array,count)); 
    printf("Minimum: %d",minimum(array,count));
    return 0; 
} 

int maximum(int array[],int n) 
{ 
    int i; 
    int max = array[0]; 
    for (i = 1; i < n; i++) 
    {
        if (array[i] > max) 
            max = array[i]; 
    }
    return max; 
} 

int minimum(int array[],int n)
{
    int i; 
    int min = array[0]; 
    for (i = 1; i < n; i++) 
    {
        if (array[i] < min) 
            min = array[i]; 
    }
    return min; 
}

该代码在编译后会产生以下代码(无警告或错误):

Enter the size of the array: 

我可以输入一个数字,但是程序完成了。 是什么导致我的程序执行此操作,该如何解决?

sdzsd999 回答:打印数组的最小值和最大值

此声明

int array[0];

无效,没有任何意义。

也是这个电话

scanf("%d",count);

具有未定义的行为。你必须写

scanf("%d",&count);

由于在函数中传递的数组的元素未更改,因此第一个函数参数应具有限定符const。

请注意,通常用户可以将等于0的值作为第二个参数传递。在这种情况下,您的函数将具有未定义的行为。

您更新后的程序可以通过以下方式查看

#include <stdio.h> 

size_t maximum( const int array[],size_t n ); 
size_t minimum( const int array[],size_t n ); 

int main( void ) 
{
    printf( "Enter the size of the array: " );

    size_t count;

    scanf( "%zu",&count );

    int array[count];

    printf("Enter the elements of the array:\n");
    for ( size_t i = 0; i < count; i++) 
    {
        scanf("%d",&array[i]);
    }

    printf("Maximum: %d\n",array[maximum( array,count )] ); 
    printf("Minimum: %d\n",array[minimum( array,count )] );

    return 0; 
} 

size_t maximum( const int array[],size_t n ) 
{ 
    size_t max_i = 0;
    ; 
    for ( size_t i = 1; i < n; i++ ) 
    {
        if ( array[max_i] < array[i] ) max_i = i; 
    }

    return max_i; 
} 

size_t minimum( const int array[],size_t n ) 
{ 
    size_t min_i = 0;
    ; 
    for ( size_t i = 1; i < n; i++ ) 
    {
        if ( array[i] < array[min_i] ) min_i = i; 
    }

    return min_i; 
} 

程序输出看起来像

Enter the size of the array: 10
Enter the elements of the array: 1 2 3 4 5 6 7 8 9
Maximum: 9
Minimum: 0
,

您需要在此 scanf 呼叫中传递 count 的地址:

a = Analysis(
             ...
             datas=[('path/to/file.jpg','assets')]
             ...
...
exe = EXE(
          ...
          icon='path/to/icon.ico')
本文链接:https://www.f2er.com/3101354.html

大家都在问