2014-03-28 216 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; 
}