0

我使用 return 命令然后尝试从 main 打印值。它返回零 (0) 值。

这个程序是关于从摄氏到华氏的温度转换。

另外,如何使用舍入函数将答案舍入为整数,使其不是带小数的浮点数。

#include <stdio.h>

int Cel_To_Fah(int a, int b); // function declaration

int main (void)

{

    int a;
    int b;

    printf(" Enter temperatrure:  "); scanf("%d", &a);

    Cel_To_Fah(a,b); // function call

    printf("The temperature is: %d\n", b);

    return 0;

} // main

int Cel_To_Fah(a,b)

{

    b=1.8*a+32;

    return b;

} // Cel_To_Fah
4

5 回答 5

6

您只需要使用赋值运算符:

b = Cel_To_Fah(a);

但是,您的程序有很多问题,包括您的Cel_To_Fah函数没有正确的签名。你可能想要这样的东西:

int Cel_To_Fah(int a)
{
    return 1.8 * a + 32;
}

你可能应该得到一本很好的初学者 C 书。

于 2013-10-14T17:35:03.277 回答
1

函数(b)不需要第二个参数。

您可以通过...

      #include<stdio.h>
    int Cel_To_Fah(int a); // function declaration, as it returns a values;


     int main (void)
       {
       int a; int b;

       printf(" Enter temperatrure: "); 
       scanf("%d", &a);
       b = Cel_To_Fah(a); /* the returned value is stored into b, and as b is an integer so it is automatically rounded. no fraction point value can be stored into an integer*/
       printf("The temperature is: %d\n", b);
       return 0;
       } // main

     int Cel_To_Fah(int a)
       {
       return 1.8 * a + 32;
       }
于 2013-10-14T17:40:00.333 回答
1

有几个问题。首先,您需要使用浮点数,而不是 int,以便您可以使用带小数点的值。否则你的计算会出错。出于同样的原因,也使用 32.0 而不是 32。

其次,您需要了解函数中的 a 和 b 与 main 中的 a 和 b 不同。它们具有相同的名称,但不在同一个“范围”内。因此,更改函数中的那个不会影响 main 中的那个。这就是为什么在 main 中你必须说 b=Cel... 这样 main 中的 b 就会得到返回值。

最后,在 c 中,你应该把你的函数放在 main 之上/之前。否则,它在技术上还没有被定义为“尚未”,尽管一些现代编译器会为你解决这个问题。阅读函数原型。

于 2013-10-14T17:46:55.180 回答
0

我在您的代码中看到了两个问题。首先,它是变量类型。我假设您希望摄氏度为整数;但 Fahrenheit = 1.8*Celsius+32 应该是浮点数。因此 b 应该是浮动的。

其次,您不应该通过函数的输入参数从函数返回值(除非您学习指针或通过 ref 调用)。我将您的代码重写如下:

include<stdio.h>

float Cel_To_Fah(int a); // function declaration

int main (void)

{

    int a;
    float b;

    printf(" Enter temperatrure:  "); scanf("%d", &a);

    b=Cel_To_Fah(a); // function call

    printf("The temperature is: %.2f\n", b);  //showing 2 decimal places

    return 0;

} // main

float Cel_To_Fah(int a)

{
    float b;

    b=1.8*(float)a+32;   //cast a from int to float

    return b;

} // Cel_To_Fah
于 2013-10-14T18:57:33.257 回答
0

由于您的函数Cel_To_Fah(a,b);返回一个值(int类型),因此您必须将其分配给其返回类型(int类型)的变量。

 int a;
 int b;

printf(" Enter temperatrure:  "); scanf("%d", &a);

b = Cel_To_Fah(a); // function call

printf("The temperature is: %d\n", b);  

你的功能应该是

int Cel_To_Fah(a)
{
    int b = 1.8*a+32;
    return b;
 } // Cel_To_Fah  

并且不要忘记将您的函数原型更改为

int Cel_To_Fah(int a);
于 2013-10-14T17:36:27.957 回答