在Stackoverflow https://stackoverflow.com/a/19200031/3185410上在线查看此解决方案我尝试通过将max设置为-infinity并将min设置为+无穷大来提出另一种解决方案。 @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);
}
我做错了什么?
答案 0 :(得分:3)
如果用户输入5然后输入6,则:
表示5: 5&gt; -inf =&gt; max = 5
代表6: 6> 5 =&gt;最大= 6 但是min已经变成了5,但它仍然是INT_MAX。
如果你放if
而不是else if
,你的表现会有所下降但我认为输出正确(我现在无法测试)。
答案 1 :(得分:0)
将第一个输入设置为最小值和最大值。然后添加你写的逻辑。这里有2行额外的代码,但你不必牺牲性能。
#include <stdio.h>
#include <limits.h>
void main()
{
int max,min,num,i=0;
min=INT_MAX;
max=INT_MIN;
printf("Enter number %d : ",i+1);
scanf("%d",&num);
min=num;
max=num;
for (i=1;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);
}