用c++编写3个函数将英尺和英寸转换为米和厘米
Writing 3 functions to convert feet and inches to meters and centimeters in C++?
我想写一个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
函数中,您声明meters
和centimeters
为局部变量。一旦函数返回,这些变量就超出了作用域,不能从其他任何地方引用。
第三个问题,这应该会给你一个编译错误,是你试图从输出函数中使用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 ¢imeters)
现在你可以用"输入"数据(英尺,英寸)和"输出"数据(米,厘米)调用这个函数。
在输出函数中,我不确定你是否想在它里面调用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;
- 防止主数据类型C++的隐式转换
- 模板参数替换失败,并且未完成隐式转换
- 努力将整数转换为链表。不知道我在这里做错了什么
- HEX值到wchar_t字符(UTF-8)的转换
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 将 Qvector<uint8_t> 转换为 QString
- 如何在cuSparse中使用cusparseXcoo2csr从coo转换为csc
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- 在c++中使用nlohmann从类到json的转换
- 从"int*"强制转换为"unsigned int"会丢失精度错误
- 将Integer转换为4字节的unsined字符矢量(按大端字节顺序)
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- 如何使用OpenCV将RBG图像转换为HSV,并将H、S和V值保存为C++中的3个独立图像
- 复制列表初始化的隐式转换的等级是多少
- 正在将指针转换为范围
- 如何防止 c++ 在从浮点型转换为双精度型(不适用于 IO)时添加额外的小数?
- 将"打开的CV图像"中的"颜色"转换为整数格式
- 是否可以从int转换为enum类类型
- 了解 GLM- openGL 中的相机转换
- 将无符号char*转换为std::istream*C++