C ++循环和声明函数

时间:2014-03-19 18:41:57

标签: c++

刚开始学习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;
}

1 个答案:

答案 0 :(得分:4)

在C ++中有3个循环。

while

do while

for

您希望将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;
}