有人可以解释一下这个c ++代码有什么问题吗?

时间:2015-11-09 08:35:59

标签: c++ c++11

以下程序是Walter J Savitch的Absolute C ++的一个例子。我正在尝试运行此代码,但收到错误,但我无法弄清楚原因。这是用户定义函数的示例。函数round()应该在舍入int值后返回double

#include <iostream>
#include <cmath>

using namespace std;

int round (double number);

int main()
{ 
    double doubleValue;
    char ans;

    do
    {
        cout << "Enter a double value: ";
        cin >> doubleValue;
        cout << "rounded that number is " << round(doubleValue) << endl;
        cout << "Again?" << endl;
        cin >> ans;
    }while(ans == 'y' || ans == 'Y');

    cout << "end of testing " << endl;
    return 0;
}

int round(double number)
{
   return static_cast<int>(floor(number + 0.5);
}

[1]:

http://i.stack.imgur.com/ABj8G.png 这是我得到的错误。

2 个答案:

答案 0 :(得分:0)

起初,我不知道为什么你实现了round()函数,因为有一个round()函数是c。

其次,您已经错误地实现了round()函数。你需要这样的东西:

int round(double num)
{
return static_cast<int>(num+0.5);
}

答案 1 :(得分:0)

从您的错误回合已经在另一个文件中定义,使用新名称创建一个新文件并且它应该可以正常工作

int my_round (double number);

int main()
{ 
    // ... 
    cout << "rounded that number is " << my_round(doubleValue) << endl;   
    // ... 
}

int my_round(double number)
{
    return static_cast<int>(floor(number + 0.5));
}