【发布时间】:2021-11-30 11:36:21
【问题描述】:
试图制作一个 C 程序,例如。浮点数组中的 5 个用户输入。然后打印数组并打印另一个累积数字的数组。它工作正常,但是如果输入是非数字的,我如何打破输入并打印“不是数字”?
#include <stdio.h>
int main(){
float i,sum;
sum=0;
const int ARRAYSIZE = 5;
float array1[ARRAYSIZE];
printf("Input a number (a total of %d numbers is needed):\n", ARRAYSIZE);
fflush(stdout);
for(int i = 0; i < ARRAYSIZE; i++){
scanf("%f", &array1[i] );
}
for(int i = 0; i < ARRAYSIZE; i++){
printf("You typed in: %.2lf\n",array1[i]);
}
for(int i = 0; i < ARRAYSIZE; i++){
sum+=array1[i];
printf("The accumulated value if the input is: %.2lf\n", sum);
}
return 0;
}
【问题讨论】:
-
检查 SCANF 的返回值!!! (很抱歉,但这是一个鲜为人知的好事情,无论如何,当问题涉及“停止非数字输入”时更是如此。)
-
唯一(潜在的)复杂情况是,如果您想从用户那里获取额外的输入,在数字输入和终止它的非数字输入之后,您将不得不刷新非- 以某种方式输入数字(理想情况下通过某种方式其他而不是可怕的
fflush(stdin))。