我编写了一个数组程序,它读取10个数字,并找到这些数字的最小值、最大值和平均值。
现在,我希望程序在遇到非数字输入或到达输入末尾时打印出“没有足够的数字”。例如:3 65 2 4 hello ->“号码不够”
到目前为止,我的代码如下:
#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;}
发布于 2016-04-22 18:48:05
scanf返回解析成功的tokens个数。
以下是如何检查输入是否成功的示例:
// 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);
}
}发布于 2016-04-22 18:48:58
您可以使用fgets和strtol
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");
}
}
}发布于 2016-04-22 18:58:54
这是一个简单的解决方案,在for循环中
while (i!=LENGTH){
puts("There's no enough numbers");
}这可以发现数组的末尾
要发现是否有非数字值,我想你必须使用一个内置的函数,比如IsDigit,它是一个用来测试是否有数字的函数。
https://stackoverflow.com/questions/36791598
复制相似问题