为啥输入q会是死循环
本帖最后由 Dr丶温 于 2018-2-12 09:27 编辑我只要键入q就无限循环下去了,不求甚解。。。#include <stdio.h>
void Temperatures(float shuru)
{
const float yidianba = 1.8;
const float sanshierdianling = 32.0;
const float erqisandianyiliu = 273.16;
float sheshidu, jiudui;
sheshidu = yidianba * shuru + sanshierdianling;
jiudui = sheshidu + erqisandianyiliu;
printf("%.2f 华氏度 = %.2f 摄氏度 = %.2f 绝对温度\n", shuru, sheshidu, jiudui);
}
int main(void)
{
float shuru;
printf("请输入华氏温度:");
scanf("%f", &shuru);
while(shuru != 'q')
{
Temperatures((float)shuru);
printf("请继续输入(输入q退出):");
scanf("%f", &shuru);
}
getch();
return 0;
} 应该是scanf函数的问题,你用%f去接受一个字符类型的输入导致输入流出现异常,每次数据读取都不正确并且无法清空输入流中的数据 哪个路过的大神调教下噻。。。{:10_254:}{:10_254:}{:10_254:} shuru 为float类型,感觉有问题 将字符q与float类型比较,就会将q字符对应的int值112与输入的float类型变量进行比较 q是char类型的,怎么能用%f接受呢 浮点型数据内存排列方式和整型类不一样,例如6.35浮点型存的数据是6.3499999(后面多少位忘记了)。
如果楼主输入的是整型的变量,可以与char互通识别。 pynliu 发表于 2018-2-12 11:23
shuru 为float类型,感觉有问题
俺知道有问题的,就是想知道具体的问题是啥子情况{:10_250:} BngThea 发表于 2018-2-12 12:45
应该是scanf函数的问题,你用%f去接受一个字符类型的输入导致输入流出现异常,每次数据读取都不正确并且无 ...
然后就是一直都清不空,从而导致了死循环了吗{:10_257:} pony马 发表于 2018-2-12 17:23
q是char类型的,怎么能用%f接受呢
嗯啊,这个俺知道,就是想知道具体点的原因{:10_266:} MSK 发表于 2018-2-12 13:18
将字符q与float类型比较,就会将q字符对应的int值112与输入的float类型变量进行比较
没有吧,可以比较的话应该不会死循环了的{:10_250:} clauslam 发表于 2018-2-12 20:54
浮点型数据内存排列方式和整型类不一样,例如6.35浮点型存的数据是6.3499999(后面多少位忘记了)。
如果 ...
原谅在下愚钝,有点没看明白{:10_245:} 感谢各位大神献计献策,就是想知道为啥一直重复死循环的上次输入,已解决
页:
[1]