各路大神!请问为什么我这个程序不能通过输入任意的字母来结束循环。
#include<stdio.h>
#define a 1.8
#define b 32.0
int main(void)
{
printf("该程序将华氏度转化为摄氏度,下面请输入华氏度\n" );
printf("若您想启动摄氏度转华氏度程序,请先输入任意小于-169.5的数字\n");
float Fahr,Cels;
scanf("%f",&Fahr);
while(Fahr>-169.5f)
{
Cels=(a)*(Fahr)+b;
printf("%.1f华氏度=%.1f摄氏度\n",Fahr,Cels);
scanf("%f",&Fahr);
}
printf("摄氏度转华氏度程序已启动,请输入温度/摄氏度\n");
scanf("%f",&Cels);
while(Cels>-273.16f)
{
Fahr=(Cels-b)/a;
printf("%.1f摄氏度=%.1f华氏度\n",Cels,Fahr);
scanf("%f",&Cels);
}
printf("bye");
return 0;
}
要求输入的是浮点数,如果输入字母的话属于非法输入数据,变量应该会被赋值为默认值0.0,while条件为真自然不会退出循环了。你可以下断点验证下。
如果输入字母,你要求输入的是%f,这样根本就不会赋值给Fahr,也就进不去你写的循环!