我正在尝试编写一个由 3 个函数组成的 C++ 程序,一个用于输入,一个用于计算,一个用于输出。该程序应该将英尺和英寸作为输入,然后将米和厘米的转换值打印回用户。我认为通过引用调用有问题,因为我仍在学习如何正确使用它,无论如何这里是代码
#include<iostream>
using namespace std;
void input(double feet , double inches);
void calc(double &feet , double &inches);
void output(double &feet , double &inches);
void main()
{
double feet1 , inches1;
char ans;
do
{
input(feet1,inches1);
calc(feet1,inches1);
output(feet1,inches1);
cout<<"Would you like to calculate again? y/n : ";
cin>>ans;
}
while(ans == 'y' || ans == 'Y');
}
void input(double feet , double inches)
{
cout<<"Enter feet : ";
cin>>feet;
cout<<"Enter inches : ";
cin>>inches;
}
void calc(double &feet , double &inches)
{
double meters , centimeters;
meters = feet * 0.3048;
centimeters = inches * 2.54;
}
void output(double &feet , double &inches)
{
calc(feet,inches);
cout<<"Converted feet to metres : "<<metres;
cout<<"Converted inches to centimeters : "<<centimeters;
}
原文由 Kareem Youssef 发布,翻译遵循 CC BY-SA 4.0 许可协议
你有(至少)三个问题:第一个是你修改了传递给
input
函数的参数,但是由于参数是按值传递的(即复制的),你只是在修改副本。您需要通过引用传递参数(您对其他函数执行此操作,即使您不需要它们)。第二个问题是,在您的
calc
函数中,您将meters
和centimeters
声明为局部变量。一旦函数返回,这些变量就会超出范围并且不能从其他任何地方引用。第三个问题,这应该会给你一个编译错误,是你尝试使用
metres
(检查拼写,它与calc
)和centimeters
来自输出函数,并且没有声明这些变量。