我一直在尝试对我的程序进行错误检查,对scanf使用while循环,但我不确定如何做到这一点。
我想确保用户输入的评委数量在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);
}

最佳答案

请尝试以下操作:

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

10-05 19:48