#include
int main(){
float i;
while (scanf_s("%f", &i) == -1 || (int)i - i != 0.0 || i<20 || i>100){
fflush(stdin); // 清空输入缓存区,避免输入字符时,scanf()进入死循环
printf("格式错误!请重新输入:\n");
}
}
while (scanf_s("%f", &i) == -1 || (int)i - i != 0.0 || i<20 || i>100)
解释:scanf_s("%f", &i) == -1,表示输入的数据没有读取成功。
(int)i - i != 0.0,表示i输入的不是整数。