【问题标题】:Celsius conversion tabel program摄氏换算表程序
【发布时间】:2019-11-15 01:24:38
【问题描述】:

C++ 中的摄氏温度表

C = 5/9 (F-32)

编写一个名为Celsius 的函数,它接受华氏温度作为参数。名为 Celsius 的函数,接受华氏温度作为参数。该函数应返回温度,转换为摄氏度。通过在循环中调用该函数来演示该函数,该循环显示华氏温度 0 到 20 及其等效摄氏温度表。

我知道我即将完成这个程序,但我似乎混淆/错过了我的变量。它应该打印出一个两列的表格,其中从 0-20 的临时转换每次增加 5。任何帮助都会很棒!这是我的代码:

#include <iostream>
#include <iomanip>

using namespace std;

// Create prototype
double celsius(double);
int main()
{
    double cTemp;

    for(int temp = 0; temp <= 20; temp+= 5)
    {
    double celTemp;
    //Call the function
    celTemp = celsius(temp);
    cout << "The temperature in celsius is: " << temp << setw(6) << 
    cTemp << endl;
    }
}
double celsius(double farenheit)
{
    double cTemp;
    cTemp = 5.0 /9.0 * (farenheit - 32);
    return cTemp;
}

【问题讨论】:

  • 请描述您当前代码遇到的具体问题。
  • 不要忘记 argv 的存在,它比 1980 年代风格的“你想玩游戏吗?[Y/N]”类型提示要少得多。
  • 现在有了更改的代码,为什么main() 中存在变量cTemp;?你从来没有给它一个值,但你尝试输出它。也许您想删除double cTemp; 并输出celTemp

标签: c++


【解决方案1】:

cTemp 有什么用途?我可以在您的代码中看到您没有给它任何价值,但您仍在尝试获取它的输出。

除此之外,您应该删除 double cTemp 并改为输出 celTemp。因为这是您用来引用从您的函数获得的摄氏温度的变量。

【讨论】:

    【解决方案2】:

    我在我的电脑上运行了你的代码。我得到了所有摄氏度列的值 0。我认为您的问题可能是为什么所有这些值都为零。 在打印值时,我在 for 循环中发现了一个错误。 你在那里写了 cTemp 。我想应该是celTemp。 现在它并没有显示所有这些都是零,而是显示正确的值。 看一眼……

    for(int temp = 0; temp <= 20; temp+= 5)
    {
    double celTemp;
    //Call the function
    celTemp = celsius(temp);
    cout << "The temperature in celsius is: " << temp << setw(10) << celTemp << endl;
    }
    

    【讨论】:

      【解决方案3】:

      你的

          for(int temp = 0; temp <= 20; temp+= 5)
          {
          double celTemp;
          //Call the function
          celTemp = celsius(temp);
          cout << "The temperature in celsius is: " << temp << setw(6) << 
          cTemp << endl;
          }
      

      不转换从输入读取的值。从你所说的不清楚程序应该做什么,但也许调用 celsius() 函数的参数不应该只是 temp,而是类似于 (temp + cTemp)。

      for 循环也忽略从 celsius() 函数返回的值,并始终在第二列中打印值 cTemp(即从标准输入读取的值),这可能是另一个错误。

      【讨论】:

      • 在 for 循环中,他错误地打印了 cTemp 而不是 celTemp。 celsius() 正在向 celTemp 返回值。所以应该打印celTemp。
      • 这就是我在第二段中所说的。自从我写下我的答案以来,这个问题已经被编辑过,所以第一段现在没有多大意义。
      猜你喜欢
      • 2018-12-16
      • 2021-06-17
      • 2016-04-14
      • 2017-11-30
      • 1970-01-01
      • 2018-08-10
      • 2017-07-24
      • 2016-02-19
      • 1970-01-01
      相关资源
      最近更新 更多