2016-04-22 49 views
1

我做了一個數組程序,它讀入10個數字,並找到這些數字的最小值,最大值和平均值。如何讓數組知道是否有非數字輸入或它到達輸入的結尾?

現在,我希望程序在遇到非數字輸入或到達輸入末尾時輸出「沒有足夠的數字」。例如3 65 2 4個招呼 - > 「有沒有足夠的數字」

這裏是我到目前爲止的代碼:

#include <stdio.h> 

#define LENGTH 10 

int main (void) { 

int array [LENGTH]; 
int i, max, min, sum; 
float average; 

printf("Enter vector of 10 numbers: "); 

// inputting the numbers into an array 

for(i = 0; i < LENGTH; i++) { 
    scanf("%d", &array [i]); 
} 

// Finding the minimum value 
min = array [0]; 
for(i = 1; i < LENGTH; i++) { 
    if(min > array [i]) { 
     min = array [i]; 
    } 
} 

printf("Minimum vector is %d\n", min); 

// Finding the maximum value 
max = array [0]; 
for(i = 1; i < LENGTH; i++) { 
    if(max < array [i]) { 
     max = array [i]; 
    } 
} 

printf("Maximum vector value is %d\n", max); 

// Finding the average of all values 
sum = 0; 
average = 0; 
for(i = 0; i < LENGTH; i++){ 
    sum = sum + array [i]; 
    average = sum/LENGTH; 
} 

printf("Average vector value is %.1f\n", average); // %.1f prints the number with 1 decimal point 


return 0; 

}

+1

[This'scanf'(and family)reference](http://en.cppreference.com/w/c/io/fscanf)可能派上用場。檢查函數*返回*。 –

回答

1

scanf返回成功解析令牌的數量。

下面是關於如何檢查,如果輸入的是成功的一個例子:

// inputting the numbers into an array 
for(i = 0; i < LENGTH; i++) { 
    if (1 != scanf("%d", &array [i])) { 
     printf("Not enough values!\n"); 
     exit(1); 
    } 
} 
1

您可以使用fgetsstrtol

char str[32]; 
char *ptr; 

for (i = 0; i < LENGTH;) { 
    if (fgets(str, sizeof str, stdin)) { 
     array[i] = (int)strtol(str, &ptr, 10); 
     if (ptr != str && *ptr == '\n') { 
      i++; 
     } else { 
      printf("Enter a valid number\n"); 
     } 
    } 
} 
+1

不清楚 - if(ptr && * ptr =='\ n'){'?ptr &&'我不明白'ptr'會如何'NULL'。 – chux

+1

@chux,'strtol()'將第一個無效字符的地址存儲在'* ptr'中,如果第一個無效字符是換行符,那麼我們有一個有效的數字,第一個版本中有一個錯誤, 'ptr'必須與'str'與'NULL'比較(如果根本沒有數字,'strtol()'存儲原始值),謝謝! –

0

這是一個簡單的解決方案,在for循環

while (i!=LENGTH){ 

puts("There's no enough numbers"); 

} 

這可以發現數組的末尾

要發現是否有非數字值,我必須使用內置函數,例如IsDigit這是一個函數來測試是否有一個數字。

相關問題