首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何让数组知道是否有非数值型输入,或者是否到达了输入的末尾?

如何让数组知道是否有非数值型输入,或者是否到达了输入的末尾?
EN

Stack Overflow用户
提问于 2016-04-22 18:42:11
回答 3查看 171关注 0票数 1

我编写了一个数组程序,它读取10个数字,并找到这些数字的最小值、最大值和平均值。

现在,我希望程序在遇到非数字输入或到达输入末尾时打印出“没有足够的数字”。例如:3 65 2 4 hello ->“号码不够”

到目前为止,我的代码如下:

代码语言:javascript
复制
#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;

}

EN

回答 3

Stack Overflow用户

发布于 2016-04-22 18:48:05

scanf返回解析成功的tokens个数。

以下是如何检查输入是否成功的示例:

代码语言:javascript
复制
// 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
EN

Stack Overflow用户

发布于 2016-04-22 18:48:58

您可以使用fgetsstrtol

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2016-04-22 18:58:54

这是一个简单的解决方案,在for循环中

代码语言:javascript
复制
  while (i!=LENGTH){

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

}

这可以发现数组的末尾

要发现是否有非数字值,我想你必须使用一个内置的函数,比如IsDigit,它是一个用来测试是否有数字的函数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36791598

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档