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