鱼C论坛

 找回密码
 立即注册
查看: 2189|回复: 12

[已解决]为啥输入q会是死循环

[复制链接]
发表于 2018-2-12 08:57:57 | 显示全部楼层 |阅读模式
40鱼币
本帖最后由 Dr丶温 于 2018-2-12 09:27 编辑

我只要键入q就无限循环下去了,不求甚解。。。
  1. #include <stdio.h>

  2. void Temperatures(float shuru)
  3. {
  4.                 const float yidianba = 1.8;
  5.                 const float sanshierdianling = 32.0;
  6.                 const float erqisandianyiliu = 273.16;
  7.                
  8.                 float sheshidu, jiudui;
  9.                
  10.                 sheshidu = yidianba * shuru + sanshierdianling;
  11.                 jiudui = sheshidu + erqisandianyiliu;
  12.                
  13.                 printf("%.2f 华氏度 = %.2f 摄氏度 = %.2f 绝对温度\n", shuru, sheshidu, jiudui);
  14. }

  15. int main(void)
  16. {
  17.                 float shuru;
  18.                
  19.                 printf("请输入华氏温度:");
  20.                 scanf("%f", &shuru);
  21.                
  22.                 while(shuru != 'q')
  23.                 {
  24.                                 Temperatures((float)shuru);
  25.                                 printf("请继续输入(输入q退出):");
  26.                                 scanf("%f", &shuru);
  27.                 }
  28.                
  29.                  
  30.                
  31.                
  32.                 getch();
  33.                 return 0;
  34. }
复制代码
最佳答案
2018-2-12 08:57:58
应该是scanf函数的问题,你用%f去接受一个字符类型的输入导致输入流出现异常,每次数据读取都不正确并且无法清空输入流中的数据

最佳答案

查看完整内容

应该是scanf函数的问题,你用%f去接受一个字符类型的输入导致输入流出现异常,每次数据读取都不正确并且无法清空输入流中的数据
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-2-12 08:57:58 From FishC Mobile | 显示全部楼层    本楼为最佳答案   
应该是scanf函数的问题,你用%f去接受一个字符类型的输入导致输入流出现异常,每次数据读取都不正确并且无法清空输入流中的数据
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-2-12 09:22:40 | 显示全部楼层
哪个路过的大神调教下噻。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-2-12 11:23:46 | 显示全部楼层
shuru 为float类型,感觉有问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-2-12 13:18:35 | 显示全部楼层
将字符q与float类型比较,就会将q字符对应的int值112与输入的float类型变量进行比较
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-2-12 17:23:40 | 显示全部楼层
q是char类型的,怎么能用%f接受呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-2-12 20:54:59 | 显示全部楼层
浮点型数据内存排列方式和整型类不一样,例如6.35浮点型存的数据是6.3499999(后面多少位忘记了)。
如果楼主输入的是整型的变量,可以与char互通识别。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-2-13 10:51:08 From FishC Mobile | 显示全部楼层
pynliu 发表于 2018-2-12 11:23
shuru 为float类型,感觉有问题

俺知道有问题的,就是想知道具体的问题是啥子情况
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-2-13 10:53:59 From FishC Mobile | 显示全部楼层
BngThea 发表于 2018-2-12 12:45
应该是scanf函数的问题,你用%f去接受一个字符类型的输入导致输入流出现异常,每次数据读取都不正确并且无 ...

然后就是一直都清不空,从而导致了死循环了吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-2-13 10:55:58 From FishC Mobile | 显示全部楼层
pony马 发表于 2018-2-12 17:23
q是char类型的,怎么能用%f接受呢

嗯啊,这个俺知道,就是想知道具体点的原因
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-2-13 11:01:04 From FishC Mobile | 显示全部楼层
MSK 发表于 2018-2-12 13:18
将字符q与float类型比较,就会将q字符对应的int值112与输入的float类型变量进行比较

没有吧,可以比较的话应该不会死循环了的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-2-13 11:01:39 From FishC Mobile | 显示全部楼层
clauslam 发表于 2018-2-12 20:54
浮点型数据内存排列方式和整型类不一样,例如6.35浮点型存的数据是6.3499999(后面多少位忘记了)。
如果 ...

原谅在下愚钝,有点没看明白
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-2-13 11:02:39 From FishC Mobile | 显示全部楼层
感谢各位大神献计献策,就是想知道为啥一直重复死循环的上次输入,已解决
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-17 07:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表