用c++编写3个函数将英尺和英寸转换为米和厘米

Writing 3 functions to convert feet and inches to meters and centimeters in C++?

本文关键字:转换 c++ 编写 函数 3个      更新时间:2023-10-16

我想写一个c++程序,由3个函数组成,一个用于输入,一个用于计算,一个用于输出。程序应该以英尺和英寸作为输入,然后将米和厘米的转换值打印回用户。我认为通过引用调用有问题,因为我仍在学习如何正确使用它,无论如何,这里的代码

#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;
}

您(至少)有三个问题:第一个是您修改了传递给input函数的参数,但由于参数是按值传递的(即复制的),您只修改了副本。您需要通过引用传递参数(对于其他函数也是这样做的,即使您不需要为它们传递参数)。

第二个问题是,在您的calc函数中,您声明meterscentimeters为局部变量。一旦函数返回,这些变量就超出了作用域,不能从其他任何地方引用。

第三个问题,这应该会给你一个编译错误,是你试图从输出函数中使用metres(检查拼写,它与calc不一样)和centimeters,并且没有声明这些变量。

你将英尺与米、英寸与厘米配对的方式会让你陷入混乱:对于各种转换,你最终会得到大于12的英寸或大于100的厘米。

如果我是你,我会只保留两个变量——米和英尺——并应用它们之间的转换。那么你可以完全删除引用,因为转换函数将返回单个值。

然后,要将英尺转换为英尺和英寸,可以使用

(int)feet

脚部

(feet - (int)feet) * 12

为英寸部分

void input(double feet , double inches);

当你想改变英尺和英寸时,你可以像在其他函数中那样使用引用。

void calc(double &feet , double &inches)

在此函数中,您可以更改本地"米"answers"厘米",但在离开函数时丢失。而且你不用英尺和英寸,所以你不需要参考。你可以这样修改:

void calc(const double feet , const double inches, double &meters, double &centimeters)

现在你可以用"输入"数据(英尺,英寸)和"输出"数据(米,厘米)调用这个函数。

在输出函数中,我不确定你是否想在它里面调用calc或者它是一个错误(因为calc函数也在main/while循环中被调用)但是在输出函数中你需要给出米和厘米。或者,因为它是这样的calc给你你需要的数据,但不要在do-while循环中调用calc。

其他事情:

#include<iostream>
using namespace std;
#include<iostream>
using namespace std;

一次就够了。

#include<iostream>
#include<iostream>
using namespace std;