Dr丶温 发表于 2018-2-12 08:57:57

为啥输入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;
}

BngThea 发表于 2018-2-12 08:57:58

应该是scanf函数的问题,你用%f去接受一个字符类型的输入导致输入流出现异常,每次数据读取都不正确并且无法清空输入流中的数据

Dr丶温 发表于 2018-2-12 09:22:40

哪个路过的大神调教下噻。。。{:10_254:}{:10_254:}{:10_254:}

pynliu 发表于 2018-2-12 11:23:46

shuru 为float类型,感觉有问题

MSK 发表于 2018-2-12 13:18:35

将字符q与float类型比较,就会将q字符对应的int值112与输入的float类型变量进行比较

pony马 发表于 2018-2-12 17:23:40

q是char类型的,怎么能用%f接受呢

clauslam 发表于 2018-2-12 20:54:59

浮点型数据内存排列方式和整型类不一样,例如6.35浮点型存的数据是6.3499999(后面多少位忘记了)。
如果楼主输入的是整型的变量,可以与char互通识别。

Dr丶温 发表于 2018-2-13 10:51:08

pynliu 发表于 2018-2-12 11:23
shuru 为float类型,感觉有问题

俺知道有问题的,就是想知道具体的问题是啥子情况{:10_250:}

Dr丶温 发表于 2018-2-13 10:53:59

BngThea 发表于 2018-2-12 12:45
应该是scanf函数的问题,你用%f去接受一个字符类型的输入导致输入流出现异常,每次数据读取都不正确并且无 ...

然后就是一直都清不空,从而导致了死循环了吗{:10_257:}

Dr丶温 发表于 2018-2-13 10:55:58

pony马 发表于 2018-2-12 17:23
q是char类型的,怎么能用%f接受呢

嗯啊,这个俺知道,就是想知道具体点的原因{:10_266:}

Dr丶温 发表于 2018-2-13 11:01:04

MSK 发表于 2018-2-12 13:18
将字符q与float类型比较,就会将q字符对应的int值112与输入的float类型变量进行比较

没有吧,可以比较的话应该不会死循环了的{:10_250:}

Dr丶温 发表于 2018-2-13 11:01:39

clauslam 发表于 2018-2-12 20:54
浮点型数据内存排列方式和整型类不一样,例如6.35浮点型存的数据是6.3499999(后面多少位忘记了)。
如果 ...

原谅在下愚钝,有点没看明白{:10_245:}

Dr丶温 发表于 2018-2-13 11:02:39

感谢各位大神献计献策,就是想知道为啥一直重复死循环的上次输入,已解决
页: [1]
查看完整版本: 为啥输入q会是死循环