数组中的最大值和最小值

时间:2015-03-14 05:50:33

标签: c

我的程序给了我两个最小值,没有最大值。我的程序应该打印最大值,如果操作码是1和最小值,如果操作码是0.请帮助

#include <stdio.h>

int minmax(int array[], int array_size, int opcode);

int main(void)
{
    int array[]= {99,4,95,2,98}; //array size
    int array_size = 5;
    int i;
    int opcode;
    array_size = 5;
    for (i = 0; i < array_size; i++)
    {
        printf("array[%d] = %d\n", i , array[i]);
    }
    printf("Enter an opcode 0 or 1: ");
    scanf("%d", &opcode);
    minmax(array, array_size, opcode);
}

int minmax(int array[], int array_size, int opcode)
{
    int i;
    int max = array[0];
    int min = array[0];
    for (i = 0; i < array_size; i++)
    {
        if (opcode == 1 && array[i] > max)
        {
            max = array[i];
            printf("The max value is: %d\n", max);
        }
        else if (opcode == 0 && array[i] < min)
        {
            min = array[i];
            printf("The min value is: %d\n", min);
        }
    }
    return 0;
}

1 个答案:

答案 0 :(得分:1)

它不会打印最大值,因为第一个元素本身是最大值。

即,

if (opcode == 1 && array[i] > max)
{
max = array[i];
printf("The max value is: %d\n", max);
}

永远不会在此代码中执行。

要输出minmax()函数的最小值或最大值 的补救措施。

您的代码应如下所示:

int minmax(int array[], int array_size, int opcode)
{
int i;
int max = array[0];
int min = array[0];
for (i = 0; i < array_size; i++)
{
if (opcode == 1 && array[i] > max)
{
max = array[i];
printf("The max value is: %d\n", max);
}
else if (opcode == 0 && array[i] < min)
{
min = array[i];
printf("The min value is: %d\n", min);
}
}
//The below code prints the final max / min (as determined by opcode)
if (opcode == 1) printf("The final maximum is %d\n",max);
else printf("The final minimum is %d\n",min);
return 0;
}