#include <stdio.h>
int main() {
float a,b,c;
while(1){
scanf("%f %f %f",&a,&b,&c);
if(a < 0 || a > 100 || b < 0 || b > 100 || c < 0 || c > 100 ){
printf("输入的值超出0~100的范围,请重新输入\n"); //当输入不合法时提醒重新输入
}else{
break; //输入合法则跳出while循环
}
}
int score1=(int)a;
int score2=(int)b;
int score3=(int)c;
printf("score1=%d,score2=%d,score3=%d\n",score1,score2,score3);
return 0;
}
因为题目没有要求用四舍五入,所以将a,b,c 强制转换成整形数值,89.8=89,这里需要注意的是转换后的数值需要用一个新的变量去保存这个值,像int a=(int)a,这种写法是错误的,因为a在前面已经定义过了。只能用新的变量去存储。
当然这道题如果用%.0f去输出也是可以通过的,不过这时就四舍五入了。89.8=90。
if(0>(a || b ||c)>100){ //判断如果输入的值不在0~100的区间就报错退出
printf("输入的值超出0~100的范围,请重新输入");
return -1;
}
0>(a || b || c)>100 并不是一个有效的表达式。在C语言中,逻辑运算符 || 用于判断逻辑或关系,它返回两个操作数中任意一个为真时的结果。因此,(a || b || c) 的结果将是一个布尔值(0或1),而不是一个数值。
接着,将布尔值与0和100进行比较是没有意义的,因为布尔值只能是0或1。所以,0>(a || b || c)>100 是一个语法错误,并不能实现你想要的功能。应该改为(a < 0 || a > 100 || b < 0 || b > 100 || c < 0 || c > 100 )。

京公网安备 11010502036488号