第一次如果输入字母能够停止程序,但是如果第一次输入数字,第二次输入字母的话不能正常停止程序。求解
#include<stdio.h>#define k2 273.16
int main(void){ const double k1=5.0/9.0; printf("请输入华氏温度值:"); double a,b,c; int d= scanf("%lf",&a);while(d>0){ b=k1*(a-32.0); c=b+k2; printf("华氏温度为%lf°,摄氏温度为%lf°,开氏温度为%lf°\n",a,b,c); printf("请继续输入温度值:"); int d=scanf("%lf",&a);}
getchar(); getchar(); return 0;
}
输入字母之后,scanf读取不合法,返回值不是变成0了吗?为什么while不能停止?
追答while 中不要重新定义int d
像你这样写, while中的d变量和while(d>0)的d变量并不是同一个
int d=scanf("%lf",&a); 改为 d=scanf("%lf",&a);