C温度转换程序保持输出0华氏度到摄氏度

当我尝试将华氏温度转换为摄氏温度时,我在C中的温度转换程序保持输出0。 从Celsius到Fahrenheit的转换似乎工作得很好。 对于函数和部分,我做了完全相同的事情但是第二次转换时我一直得到0。 有人可以帮助我或告诉我我做错了什么?

#include  //Function Declarations float get_Celsius (float* Celsius); //Gets the Celsius value to be converted. void to_Fahrenheit (float cel); //Converts the Celsius value to Fahrenheit and prints the new value. float get_Fahrenheit (float* Fahrenheit); //Gets the Fahrenheit value to be converted. void to_Celsius (float fah); //Converts the Fahrenheit value to Celsius and prints the new value. int main (void) { //Local Declarations float Fahrenheit; float Celsius; float a; float b; //Statements printf("Please enter a temperature value in Celsius to be converted to Fahrenheit:\n"); a = get_Celsius(&Celsius); to_Fahrenheit(a); printf("Please enter a temperature value in Fahrenheit to be converted to Celsius:\n"); b = get_Fahrenheit(&Fahrenheit); to_Celsius(b); return 0; } //main float get_Celsius (float* Celsius) { //Statements scanf("%f", &*Celsius); return *Celsius; } void to_Fahrenheit (float cel) { //Local Declarations float fah; //Statements fah = ((cel*9)/5) + 32; printf("The temperature in Fahrenheit is: %f\n", fah); return; } float get_Fahrenheit (float* Fahrenheit) { //Statements scanf("%f", &*Fahrenheit); return *Fahrenheit; } void to_Celsius (float fah) { //Local Declarations float cel; //Statements cel = (fah-32) * (5/9); printf("The temperature in Celsius is: %f\n", cel); return; } 

 cel = (fah-32) * (5/9); 

这里,5/ 5/9是整数除法,其结果为0 ,将其改为5.0/9


在几行中,您正在使用

 scanf("%f", &*Celsius); 

&*不是必需的,只需scanf("%f", Celsius); 会做。

 cel = (fah-32) * (5/9); 

5/9int/int并且将在int给出结果,因此它是0

将其更改为

 cel = (fah-32) * (5.0/9.0); 

要么

 cel = (fah-32) * ((float)5/(float)9);