Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 返回多个值的输入数组函数_C - Fatal编程技术网

C 返回多个值的输入数组函数

C 返回多个值的输入数组函数,c,C,创建一个实现函数的程序,该函数输入向量及其大小,通过函数的两个参数返回向量的最大值和最小值 我正在做这个程序,但我找不到错误。我走对了方向 -对不起,我的英语不好 #include <stdio.h> int function (int A[],int size,int *max, int *min) { int temp,i,j; for(i=0;i<size;i++) { for(j=0;i<size;j++)

创建一个实现函数的程序,该函数输入向量及其大小,通过函数的两个参数返回向量的最大值和最小值 我正在做这个程序,但我找不到错误。我走对了方向

-对不起,我的英语不好

#include <stdio.h>
int function (int A[],int size,int *max, int *min)
{
    int temp,i,j;

    for(i=0;i<size;i++)
    {
        for(j=0;i<size;j++)
        {
            if(A[i] < A[j])
            {
                temp = A[i];
                A[i] = A[j];
                A[j] = temp;
            }
        }

    }

    *min = A[size]; 
    *max = A[0];

    return 0;
}



int main ()

{
    int size,i;
    int max,min;
    int *A;

    printf("Enter size of the array ");
    scanf("%d",&size);

    A = (int*)malloc(size * sizeof(int));

    for(i=0;i<size;i++)
    {
        printf("Enter value:");
        scanf("%d",&A[i]);
    }

    function(A,size,&max,&min);

    printf("The min is: %d\n",min);
    printf("The max is: %d:\n",max);

}
#包括
int函数(int A[],int size,int*max,int*min)
{
内部温度,i,j;

对于(i=0;i在这一行中
for(j=0;i您有多个错误。请阅读以下代码的注释:

#include <stdio.h>

void function (int A[],int size,int *max, int *min) // you're not returning any value from this function. So return type should be void
{
    int temp,i,j;

    for(i=0;i<size;i++)
    {
        for(j=0;j<size;j++)
        {
            if(A[i] < A[j])
            {
                temp = A[i];
                A[i] = A[j];
                A[j] = temp;
            }
        }

    }

    *min = A[0]; //updated
    *max = A[size-1]; //updated
       //updated,no return statement

}



int main ()

{
    int size,i;
    int max,min;
    int *A;

    printf("Enter size of the array ");
    scanf("%d",&size);

    A = (int*)malloc(size * sizeof(int));

    for(i=0;i<size;i++)
    {
        printf("Enter value:");
        scanf("%d",&A[i]);
    }

    function(A,size,&max,&min);

    printf("The min is: %d\n",min);
    printf("The max is: %d:\n",max);
    return 0;

}
附加说明:您可以在输入过程中计算最大值和最小值。例如:

#include <limits.h>
int main ()

{
    int size,i;
    int max=INT_MIN,min=INT_MAX;
    int *A;

    printf("Enter size of the array ");
    scanf("%d",&size);

    A = (int*)malloc(size * sizeof(int));
    for(i=0;i<size;i++)
    {
        printf("Enter value:");
        scanf("%d",&A[i]);
        if(A[i]>max)
        {
            max = A[i];
        }
        if(A[i]<min)
        {
            min = A[i];
        }
    }


    printf("The min is: %d\n",min);
    printf("The max is: %d:\n",max);
    return 0;

}
#包括
int main()
{
int大小,i;
int max=int_MIN,MIN=int_max;
int*A;
printf(“输入数组的大小”);
scanf(“%d”,大小(&S);
A=(int*)malloc(size*sizeof(int));
对于(i=0;imax)
{
max=A[i];
}

if(A[i]如果只需要最大值和最小值,则无需对数组进行排序。
A[size]
超出范围,因为A只有
size
元素长。正如OmG所指出的,for
的第二个
循环有错误的测试(它应该测试
j
而不是
i
)。此外,您还可以使用
for(i=0;i
for(j=i+1;j
来减少迭代次数。但它仍然是O(n^2)您不需要排序,只需在单个循环中搜索最小值和最大值。发布的代码缺少以下语句:
#include
,需要公开函数的原型:
malloc()
发布的代码还需要调用
free()
以避免内存泄漏。调用任何堆分配函数时:
malloc
calloc
realloc
1)返回的类型为
void*
,因此可以分配给任何指针。强制转换只会使代码混乱,使其更难理解、调试等。2)始终选中(!=NULL)确保操作成功的返回值。该函数按降序对数组进行排序时,实际上会得到错误的最小值和最大值。但他在这里按升序对数组进行排序。我得到更正!排序例程的双重覆盖误导了我。@Ian Abbott我认为这是最严重的错误如果
*min>A[i]
,那么
*max>A[i]
就不合理了,因此如果
,您可以使用
#include <limits.h>
int main ()

{
    int size,i;
    int max=INT_MIN,min=INT_MAX;
    int *A;

    printf("Enter size of the array ");
    scanf("%d",&size);

    A = (int*)malloc(size * sizeof(int));
    for(i=0;i<size;i++)
    {
        printf("Enter value:");
        scanf("%d",&A[i]);
        if(A[i]>max)
        {
            max = A[i];
        }
        if(A[i]<min)
        {
            min = A[i];
        }
    }


    printf("The min is: %d\n",min);
    printf("The max is: %d:\n",max);
    return 0;

}