问题在于,无论如何,我的深度要么等于0,要么显示它等于你在扫描中放入的任何东西,但是仍然会像以后一样0。我试着搞乱格式,但无济于事。谢谢!
#include <stdio.h>
int main(void)
{
double depth;
printf("Please enter the current depth in Kilometers.");
scanf("%d", &depth);
printf("The depth is %f \n", depth);
double celcius = (10* depth + 20);
printf("The temperature in celcius is %f \n", celcius);
double fahrenheit = (1.8*celcius+31);
printf("The temperature in fahrenheit is %f \n", fahrenheit);
}
答案 0 :(得分:2)
当您读取并解析输入为整数("%d"
格式读取整数)时,您有未定义的行为并将该整数存储在浮点数中点变量。整数和浮点值不会以相同的格式存储在计算机上。
您需要使用"%lf"
scanf
格式:
scanf("%lf", &depth);
答案 1 :(得分:0)
编译器应警告您%d
不是double的正确格式说明符。对于%lf
,scanf
实际上是正确的%f
,而printf
可以使用{{1}}。我建议你用上面列出的命令中的一个(或全部)进行编译:
您可以找到有关gcc警告here的更多信息。
也可以在这里阅读:
答案 2 :(得分:0)
scanf
中的类型不匹配:您指定%d
但是指向double
的指针,其中scanf
需要指向int
的指针。< / p>
以这种方式修复代码:
scanf("%lf", &depth);
还有另一个错误,虽然不是致命的:从Celcius转换到Fahrenheit是不正确的,它应该是:
double fahrenheit = 1.8 * celcius + 32;