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