使用 while 循环检查 scanf 的错误?

Error Check for scanf using while loops?

我一直在尝试对我的程序进行错误检查,使用 while 循环检查 scanf,但我不确定该怎么做。

我想确保用户输入的评委人数介于 4 到 8 之间,并且分数不会低于 0 或高于 10。

有人能帮帮我吗?

谢谢!

#include <stdio.h>

int i,j,k, judges;
float max, min,total;

int main(){
   max = 0.0;
   min = 10.0;
   judges = 0;
   total = 0;

printf("Enter number of judges between 4-8: ");
scanf("%d", &judges);

    float scores[judges];

for(i = 0; i < judges; i++){
    printf("Enter a score for judge %d : ", i + 1);
    scanf("%5f", &scores[i]);
}
for(j = 0; j < judges; j++){
    if(min > scores[j]){
        min = scores[j];
    }
    if (max < scores[j]){
        max = scores[j];
    }
}
for(k = 0; k < judges; k++){
    total = total + scores[k];
}
total = total-max-min;
printf("max = %4.1f    min = %4.1f    total = total = %4.1f", min,   max,total);
}

您只需要在要检查的区域周围使用 do-while 循环。如果不满足条件(while 部分),将重复循环并再次提示用户。

do{
    printf("Enter number of judges between 4-8: ");
    scanf("%d", &judges);
}while(judges < 4 || judges > 8);

尝试以下操作:

// for judge
while (1) {
    printf("Enter number of judges between 4-8: ");
    scanf("%d", &judges);
    if (judges >= 4 && judges <= 8)
        break;
    else
        puts("Judge out of range of 4 and 8.");
}

// for socres
for(i = 0; i < judges; i++){
    while (1) {
        printf("Enter a score for judge %d : ", i + 1);
        scanf("%5f", &scores[i]);
        if (scores[i] >= 0.0 && scores[I] <= 10.0)
            break;
        else
            puts("score out of range of 0.0 and 10.0");
}