刚开始学习C ++并且我遇到了让函数循环的问题......不确定我是否做得对!任何帮助将不胜感激。
为了给出一些上下文,我试图建立一个简单的度数来转换为farenheit转换器,它以度为单位的用户输入值并输出farenheit中的值。另外,就像在python中你可以使用:time.sleep()
来设置消息之间的延迟,你能用C ++做到吗?
以下是我迄今为止所做的事情:
#include <iostream>
using namespace std;
//-------------------------------------------------
void DegreesToFarenheit()
{
//Declaration
float Degrees, Farenheit;
//User Prompt
cout << "Please Enter a Temperature in Degrees: " << endl;
cin >> Degrees;
cout << "" << endl;
cout << "" << endl;
//Program
Farenheit = (((Degrees * 9)/5) + 32);
cout << Degrees << " Degrees" << " is " << Farenheit << " Farenheit";
cout << "" << endl;
}
char RepeatPrompt()
{
char Ans;
cout << "Would you like to enter a new value? ";
cin >> Ans;
cout << "" << endl;
if(Ans = "y" or "Y")
{DegreesToFarenheit();}
else if(Ans = "n" or "N")
{return 0;}
else
{main();}
}
int main()
{
cout << "Degrees To Farenheit Converter V1.0" << endl;
cout << "----------------------------------------" << endl;
DegreesToFarenheit() ;
RepeatPrompt() ;
return 0;
}
答案 0 :(得分:4)
在C ++中有3个循环。
您希望将main方法视为程序的起点 - 并将其视为第一个控制级别。从那里你应该委托管理程序运行时的方法。如果你想重用一段代码,你会想要使用循环并再次调用它。您的代码示例与recursion类似,但它不是正确的实现,也不适合使用它。递归可以是简化复杂迭代算法的强大工具,但不适合所有像循环一样的情况。它不适合这里。
在您的情况下,do while
似乎合适。还要注意开发人员的编码偏好风格,从技术上讲,任何循环都可以使用一些技巧。
编辑我做了一些代码清理工作。当然还有很多工作要做。请注意,您的教师/在线教程可能会显示在方法开头组合在一起的变量声明。这是c
天的旧遗留物,没有必要,我发现它很乱。保持变量接近其使用。在您觉得自己声明了太多变量时,请考虑将您的功能分开。
void DegreesToFarenheit()
{
cout << "Please Enter a Temperature in Degrees: ";
float degrees;
cin >> degrees;
float farenheit = (((degrees * 9)/5) + 32);
cout << degrees << " Degrees is " << farenheit << " Farenheit";
cout << endl;
}
bool RepeatPrompt()
{
cout << "Would you like to enter a new value? ";
char ans;
cin >> ans;
cout << endl;
return ans == 'y' || ans == 'Y';
}
int main()
{
do
{
DegreesToFarenheit();
} while(RepeatPrompt());
return 0;
}