为什么我的参考工作没有通过?

时间:2014-06-05 17:40:22

标签: c++

我无法弄清楚为什么我的参考传递不起作用?我已经用谷歌搜索了如何修复它,但似乎没有任何东西可以解释它足以让我理解。有谁知道为什么会这样?

#include <iostream>
#include <cmath>
#include <cstdlib>
#include <iomanip>

using namespace std;
void celsius_to_fahrenheit(double celsius);
void get_celsius(double &);

int main()
{
   system("clear");

   double fahrenheit, celsius, celsius_in;
   celsius = get_celsius(double celsius_in);

   fahrenheit = celsius_to_fahrenheit(celsius);

   cout << celsius << "C = " << fahrenheit << "F\n";

   return 0;
}
void celsius_to_fahrenheit(double celsius)
{
     return(celsius * (9.0/5.0) + 32.0);
}
void get_celsius(double &celsius_in)
{
    cout << "Enter the temperature in celsius: ";
    cin >> celsius_in;
}

4 个答案:

答案 0 :(得分:2)

celsius = get_celsius(double celsius_in);

get_celsius的返回类型为void,但您要分配给celsius

假设您没有修改您的功能(我建议您这样做),您必须至少修改main才能执行此操作

get_celsius(celsius_in);
celsius = celsius_in;
fahrenheit = celsius_to_fahrenheit(celsius);

或者更好的是,get_celsius应该只返回double,以便您可以从中进行分配。

答案 1 :(得分:0)

celsius = get_celsius(double celsius_in);

get_celsius是一个void函数,因此您不会为celsius分配任何内容,而是将其传递给您的convert函数。尝试将celsius_in传递给您的转换函数。

答案 2 :(得分:0)

您声明函数celsius_to_fahrenheit和get_celsius具有返回类型void

void celsius_to_fahrenheit(double celsius);
void get_celsius(double &);

所以你可能不会在你试图做的任务陈述中使用它们

celsius = get_celsius(double celsius_in);
fahrenheit = celsius_to_fahrenheit(celsius);

此外,在第一个赋值语句中,语法不正确。

同样不清楚为什么你定义了三个变量,而你需要的只是将摄氏度转换为华氏度。这就足以定义最多两个变量。

该程序可以采用以下方式

#include <iostream>
#include <cstdlib>

double celsius_to_fahrenheit( double celsius );
double get_celsius();

int main()
{
   std::system( "cls" );

   double celsius = get_celsius();

   double fahrenheit = celsius_to_fahrenheit( celsius );

   std::cout << celsius << "C = " << fahrenheit << "F\n";

   return 0;
}

double celsius_to_fahrenheit( double celsius )
{
     return ( celsius * ( 9.0 / 5.0 ) + 32.0 );
}

double get_celsius()
{
    std::cout << "Enter the temperature in celsius: ";

    double celsius = 0.0;
    std::cin >> celsius;

    return celsius;
}

如果需要使用引用,则可以将函数get_celsius定义为之前

void get_celsius( double &celsius )
{
    std::cout << "Enter the temperature in celsius: ";

    celsius = 0.0;
    std::cin >> celsius;
}

但必须按以下方式调用

   double celsius;
   get_celsius( celsius );

答案 3 :(得分:0)

试试这个......

#include <iostream>
#include <cmath>
#include <cstdlib>
#include <iomanip>

using namespace std;
double celsius_to_fahrenheit(double celsius);
double get_celsius(double &celsius_in);

int main()
{
`enter code here`system("clear");

`enter code here`double fahrenheit, celsius, celsius_in;
`enter code here`celsius = get_celsius(celsius_in);

`enter code here`fahrenheit = celsius_to_fahrenheit(celsius);
`enter code here`cout << celsius << "C = " << fahrenheit << "F\n";

`enter code here`return 0;
}
double celsius_to_fahrenheit(double celsius)
{
`enter code here`return(celsius * (9.0/5.0) + 32.0);
}
double get_celsius(double &celsius_in)
{
`enter code here`cout << "Enter the temperature in celsius: ";
`enter code here`cin >> celsius_in;
`enter code here`return celsius_in;
}