该计划不提供输出

时间:2016-10-31 11:36:51

标签: c++

我使用以下代码打印出代码,但我没有显示圆圈的正确区域。它显示-215487854145作为圆圈的区域..

请帮帮我 代码下面的代码:

请帮助我,因为我是这门语言的新手,我想我一切都做对了

#include <iostream>

 using namespace std;

 int main()
 {
     int a, r;
     a = 3.14 * r * r ;

     cout << "enter Radius";

     cin >> r;

     cout << "area of circle is";
     cout << a;

     return 0;
}

4 个答案:

答案 0 :(得分:4)

两个问题。

  1. 您正在使用{em> unitialised 值a计算r。程序行为 undefined 。在cin >> r;语句后移动它。

  2. int中工作可能会导致溢出问题。 C ++中int的最大可能值可以小到32767.请改用double,并改进PI值。请注意,3.14 * r * r类型无论如何都是double,您目前正在强制转换为int

  3. 对于PI本身,它不包含在C ++标准库中。考虑

    constexpr double pi = 3.14159265358979323846264338328;

    如果您正在使用数学库,请从数学库中选择一个。

答案 1 :(得分:2)

您在读取值之前在计算中使用了r。 之后将其移动到

cin >> r;
a = 3.14 * r * r ;

答案 2 :(得分:1)

与数学不同,

a = 3.14 * r * r ;

没有定义ar之间的关系(它不是一个等式)。
相反,它表示&#34;将a的当前值替换为r&#34;当前值的平方的3.14倍。 由于您尚未给出r值,因此结果未定义。

您需要稍微移动线条,以便不使用尚不存在的值 你也不应该使用整数,而是使用浮点数。

 double r;
 cout << "enter Radius";
 cin >> r;
 double a = 3.14 * r * r ;
 cout << "area of circle is " << a;

答案 3 :(得分:1)

#include <iostream>

using namespace std;

int main()
{
  int a, r;
  // your r was not initialized when you use it.
  a = 3.14 * r * r ;

  cout << "enter Radius";

  cin >> r;

  cout << "area of circle is";
  cout << a;

  return 0;
}

正确答案:

#include <iostream>

using namespace std;

int main()
 {
    int a, r;

    cout << "enter Radius";

    cin >> r;

    //after r being initialized.
    a = 3.14 * r * r;
    cout << "area of circle is";
    cout << a;

    return 0;
}