簡體   English   中英

如何讓數組知道是否存在非數字輸入或到達輸入的結尾?

[英]How to let the array know if there is a non-numeric input or it reaches the end of input?

我制作了一個數組程序,該程序讀取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;

}

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);
    }
}

您可以使用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");
        }
    }
}

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

  while (i!=LENGTH){

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

}

這可以發現數組的結尾

要發現是否存在非數值,我必須使用內置函數,例如IsDigit ,該函數可以測試是否存在數字。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM