在 Stackoverflow 上在线查看此问题的解决方案 https://stackoverflow.com/a/19200031/3185410我试图通过将 max 设置为 -infinity 并将 min 设置为 +infinity 来提出另一种解决方案。 @haccks 此处的代码运行良好。
#include <stdio.h>
int main()
{
int num, max, min;
printf ("Enter four numbers: ");
scanf ("%d", &num);
max = min = num;
for (int i = 0; i < 3; i++)
{
scanf ("%d", &num);
if (max < num)
max = num;
else if (min > num)
min = num;
}
printf ("\n%d %d", max, min);
return 0;
}
这是我想出的:
#include <stdio.h>
#include <limits.h>
void main()
{
int max,min,num,i;
min=INT_MAX;
max=INT_MIN;
for (i=0;i<=3;)
{
i++;
printf("Enter number %d : ",i);
scanf("%d",&num);
if (num>max) max=num;
else if (num<min) min=num;
}
printf("max is %d and min is %d",max,min);
}
我做错了什么?
最佳答案
如果用户输入 5 那么 6 你有:
对于 5 : 5>-inf => 最大值 = 5
对于 6 : 6>5 => 最大值 = 6 但后来 min 变成了 5,但它仍然是 INT_MAX。
如果您使用 if
而不是 else if
,您的性能会下降,但我认为输出正确(我现在无法测试)。
关于c - 查找多个整数之间的最小值和最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21066084/