2014-03-28 214 views
1

我是C的新手。我在while循环中查找最小值和最大值时遇到了问题。 有人能告诉我,我怎么能找到不与随机数初始化最小值MIN值..在C中查找最小值和最大值(while循环)

#include<stdio.h> 
#define STOP 0 
main() 
{ 
int n, min, max; 
printf("unesite niz cijelih brojeva [0 za kraj]: \n"); 

scanf("%d", &n); 
max=0; 
min=999999; 
while(n!=STOP) 
{ 
    if(n<min) 
     min=n; 
    if (n>max) 
     max=n; 
    scanf("%d", &n); 
} 
printf("max broj je: %d, a min broj je: %d.\n", max, min); 
    system("pause"); 

}

+4

无条件地将min分配给您读取的第一个值。 –

+0

为什么min = 9999999;? – user3329166

+3

min = n; while循环开始之前。 – user3329166

回答

0

问题是在行我在那里初始化最小值。正确的代码是:

#include<stdio.h> 
#define STOP 0 
main() 
{ 
int n, min, max; 
printf("unesite niz cijelih brojeva [0 za kraj]: \n"); 

scanf("%d", &n); 
max=0; 
min=n; //here was the problem 
while(n!=STOP) 
{ 
if(n<min) 
    min=n; 
if (n>max) 
    max=n; 
scanf("%d", &n); 
} 
printf("max broj je: %d, a min broj je: %d.\n", max, min); 
system("pause"); 
} 
1

作为@МаркоЛучић说min=n;

代码也max=n;

建议的修改可以:

1-初始化min, max

#include <limits.h> 
min = INT_MAX; 
max = INT_MIN; 

2-测试scanf()结果。只需要1 scanf()

while (scanf("%d", &n) == 1 && n != STOP) { 
    if(n < min) 
    min = n; 
    if (n > max) 
    max = n; 
}