0
#include <iostream>
// #include <conio>
using namespace std;
int main(){
int choice;
double temp, result;
 std::cout <<"Enter temprature";
std::cin>>temp;
 std::cout<<"Enter number between 1 or 2";
std::cin>>choice;
switch (choice){
case 1 : 
    result = (5*temp /9) - 32;
     std::cout<<"answer is" <<result<<"C \n";
    break;
case 2 :
    result = (9/5*temp) + 32;
     std::cout <<"answer" <<result<<"F";
    break;
default :  std::cout<<"Wrong number";
}
return 0;
}

我正在使用此代码进行基本转换(切换练习)并且出现超时错误。我是 cpp 的新手,所以如果你觉得这很容易,请不要介意。

另外,我如何在这个程序中使用像 getch() 这样的 conio.h 函数?我正面临这个错误:

Enter temprature


Timeout -  Some common reasons for Timeout 
Your Program may have a endless loop 
4

2 回答 2

1

您的代码在 MSVS 2015 中编译,并且似乎可以工作。

这个:

result = (5*temp /9) - 32;

不是正确的公式。它应该是

result = 5 * (temp - 32) / 9;

这个:

result = (9/5*temp) + 32;

遭受整数溢出。它应该是:

result = (9.0 / 5 * temp) + 32;

或者

result = (9 * temp / 5) + 32;

我如何在这个程序中使用像 getch() 这样的 conio.h 函数?

conio.h不是标准头文件,getch()也不是标准函数,因此尽管您可以在某些平台上使用它们,但它们在其他平台上不可用。

于 2018-01-20T17:15:30.290 回答
1

啊,终于找到错误了。看来您正在使用JDoodle,并且没有向标准输入提供任何输入!这很容易解决。只需单击标有 的框Stdin Inputs...,并在第一行输入第一个提示的输入,在第二行输入第二个提示的输入。这是一个示例屏幕截图:

截屏

唯一的问题是每个输出都在同一行,因此您可能需要在代码中添加一些换行符。

作为第二种解决方案,您可以打开交互模式(stdin 输入正上方的按钮),这实际上会在运行程序时要求您输入。此解决方案可能更适合您的需求,因为它更有意义。

就目前conio.h而言,除非您在 Windows 计算机上本地工作,否则您将无法使用该标头中的函数(这很好,因为它们是非标准的)。

于 2018-01-20T17:43:46.917 回答