QQ登录

只需一步,快速开始

登录 | 立即注册 | 找回密码

主题

帖子

荣誉

VIP至尊会员

Rank: 15Rank: 15Rank: 15

积分
222
查看: 285|回复: 12

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

[复制链接]
最佳答案
5 
累计签到:114 天
连续签到:1 天
Dr丶温 发表于 2018-2-12 08:57:57 28512 | 显示全部楼层 |阅读模式
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去接受一个字符类型的输入导致输入流出现异常,每次数据读取都不正确并且无法清空输入流中的数据
楼层
跳转到指定楼层
最佳答案
1022 
累计签到:336 天
连续签到:89 天
BngThea 发表于 2018-2-12 08:57:58 From FishC Mobile | 显示全部楼层    本楼为最佳答案   
应该是scanf函数的问题,你用%f去接受一个字符类型的输入导致输入流出现异常,每次数据读取都不正确并且无法清空输入流中的数据
最佳答案
5 
累计签到:114 天
连续签到:1 天
Dr丶温  楼主| 发表于 2018-2-12 09:22:40 | 显示全部楼层
哪个路过的大神调教下噻。。。
最佳答案
0 
累计签到:303 天
连续签到:1 天
pynliu 发表于 2018-2-12 11:23:46 | 显示全部楼层
shuru 为float类型,感觉有问题
最佳答案
30 
累计签到:157 天
连续签到:1 天
MSK 发表于 2018-2-12 13:18:35 | 显示全部楼层
将字符q与float类型比较,就会将q字符对应的int值112与输入的float类型变量进行比较
最佳答案
0 
累计签到:51 天
连续签到:3 天
pony马 发表于 2018-2-12 17:23:40 | 显示全部楼层
q是char类型的,怎么能用%f接受呢
最佳答案
0 
累计签到:5 天
连续签到:1 天
clauslam 发表于 2018-2-12 20:54:59 | 显示全部楼层
浮点型数据内存排列方式和整型类不一样,例如6.35浮点型存的数据是6.3499999(后面多少位忘记了)。
如果楼主输入的是整型的变量,可以与char互通识别。
最佳答案
5 
累计签到:114 天
连续签到:1 天
Dr丶温  楼主| 发表于 2018-2-13 10:51:08 From FishC Mobile | 显示全部楼层
pynliu 发表于 2018-2-12 11:23
shuru 为float类型,感觉有问题

俺知道有问题的,就是想知道具体的问题是啥子情况
最佳答案
5 
累计签到:114 天
连续签到:1 天
Dr丶温  楼主| 发表于 2018-2-13 10:53:59 From FishC Mobile | 显示全部楼层
BngThea 发表于 2018-2-12 12:45
应该是scanf函数的问题,你用%f去接受一个字符类型的输入导致输入流出现异常,每次数据读取都不正确并且无 ...

然后就是一直都清不空,从而导致了死循环了吗
最佳答案
5 
累计签到:114 天
连续签到:1 天
Dr丶温  楼主| 发表于 2018-2-13 10:55:58 From FishC Mobile | 显示全部楼层
pony马 发表于 2018-2-12 17:23
q是char类型的,怎么能用%f接受呢

嗯啊,这个俺知道,就是想知道具体点的原因
最佳答案
5 
累计签到:114 天
连续签到:1 天
Dr丶温  楼主| 发表于 2018-2-13 11:01:04 From FishC Mobile | 显示全部楼层
MSK 发表于 2018-2-12 13:18
将字符q与float类型比较,就会将q字符对应的int值112与输入的float类型变量进行比较

没有吧,可以比较的话应该不会死循环了的
最佳答案
5 
累计签到:114 天
连续签到:1 天
Dr丶温  楼主| 发表于 2018-2-13 11:01:39 From FishC Mobile | 显示全部楼层
clauslam 发表于 2018-2-12 20:54
浮点型数据内存排列方式和整型类不一样,例如6.35浮点型存的数据是6.3499999(后面多少位忘记了)。
如果 ...

原谅在下愚钝,有点没看明白
最佳答案
5 
累计签到:114 天
连续签到:1 天
Dr丶温  楼主| 发表于 2018-2-13 11:02:39 From FishC Mobile | 显示全部楼层
感谢各位大神献计献策,就是想知道为啥一直重复死循环的上次输入,已解决

发表回复

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

本版积分规则

关闭

小甲鱼强烈推荐 上一条 /1 下一条

    移动客户端下载(未启用)
    微信公众号

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备11014136号

Copyright 2018 鱼C论坛 版权所有 All Rights Reserved.

Powered by Discuz! X3.1 Copyright
© 2001-2018 Comsenz Inc.    All Rights Reserved.

小黑屋|手机版|Archiver|鱼C工作室 ( 粤公网安备 44051102000370号 | 粤ICP备11014136号

GMT+8, 2018-5-21 16:50

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