#include <stdio.h>
#include <stdlib.h>
int main (void)
{
double f;
printf ("What is the temperature in Fahrenheit?\n");
scanf ("%d", &f);
double x = (f-32)*(5/9);
printf ("%d degrees Fahrenheit \n",f);
printf ("%d degrees Celsius",x);
system("PAUSE");
return 0;
}
f似乎是变量f的打印地址而不是值,它可能是一个语法错误。
答案 0 :(得分:7)
%d应为%f:
printf ("%f degrees Farenheit \n",f);
printf ("%f degress Celsius",x);
编辑:正如乔纳森所说,你需要改变:
double x = (f-32)*(5/9);
到
double x = (f-32)*(5.0/9);
在C中,整数除法(除数和除数都是整数类型的除法)截断,因此5/9始终为0.
答案 1 :(得分:3)
%d
表示“十进制整数”。您使用的是double
,而不是int
。因此,请使用%lf
中的scanf()
和%f
中的printf()
。
答案 2 :(得分:2)
试试这个......
#include <stdio.h>
//#include <stdlib.h>
int main (void)
{
float c;
float f;
printf ("What is the temperature in Fahrenheit?\n");
scanf ("%f", &f);
c = (f-32)*(5.0/9.0);
printf ("%f degrees Fahrenheit \n",f);
printf ("%f degrees Celsius \n",c);
system("PAUSE");
return 0;
}
答案 3 :(得分:2)
您的第一个问题是double x = (f-32)*(5/9)
。 5/9
为零,因为您使用整数除法,因此x
将为所有输入设置值0.0
。对于浮点除法,请使用浮点数(如5.0/9.0
)。
其次,%d
用于打印整数。使用%f
打印浮点值。
答案 4 :(得分:0)
添加其他人所说的,%d
代表“十进制”(而不是%x
是“十六进制”)
对于浮点数,或者在双精度浮点数的情况下,使用%f
答案 5 :(得分:0)
10次中的9次,当您使用printf
显示调试数据并发现它显示bizzare结果时,您的printf
电话中存在错误。
这就是我现在试图避免printf
的原因。动态格式位是整洁的,但极端类型 - 不安全的呼叫使它经常成为错误的来源而不是启发。