鱼C论坛

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

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

[复制链接]
发表于 2018-2-12 08:57:57 | 显示全部楼层 |阅读模式
40鱼币
本帖最后由 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;
} 
最佳答案
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-11-6 09:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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