我的程序给了我两个最小值,没有最大值。我的程序应该打印最大值,如果操作码是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;
}
答案 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;
}