我一直在尝试对我的程序进行错误检查,对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");
}