C++ 使用c+计算卫星速度+;,逻辑错误

C++ 使用c+计算卫星速度+;,逻辑错误,c++,C++,我一直试图用公式v=-1/2*GMm/r来计算卫星的速度 使用C++编译成功,但在全部输入后,其结果不显示,并突然终止。我试图重新编写代码来解决这个问题,但都白费了 #include <iostream> using namespace std ; #define G 6.672 float calculate(float , float , float) ; int main(void) { float aa ; aa = (1/2) ; cout &

我一直试图用公式v=-1/2*GMm/r来计算卫星的速度 使用C++编译成功,但在全部输入后,其结果不显示,并突然终止。我试图重新编写代码来解决这个问题,但都白费了

 #include <iostream>
 using namespace std ;
 #define G 6.672 

 float calculate(float , float , float) ;

 int main(void)
 {
  float aa ;
  aa = (1/2) ;
  cout << aa ;
  cout << "Total energy of satellite " << endl ;
float ene ,m , M , r ;
cout << "Enter masses and radius " << endl ;
cin >> m  ;
cout << "2nd mass" << endl ;
cin >> M ;
cout << "radius " ;
cin >> r ;

ene = calculate(m ,M , r);
cout << ene ;

return 0 ;
system("PAUSE") ;
}
float calculate(float a , float b , float c)
{
      float result ;
      result = 0.5 * (G * a * b)/c ;
      return result; 
}
#包括
使用名称空间std;
#定义G 6.672
浮动计算(浮动,浮动,浮动);
内部主(空)
{
浮动aa;
aa=(1/2);
cout
系统(“暂停”);
未到达,因为它发生在
返回0;
之后,该返回立即退出该方法


但是,应避免使用
系统(“暂停”)
支持阻塞,等待输入,如下链接所示:

您是否尝试打印m、m和r?如果r为0,您将得到0的除法。PS:可怕的变量命名约定m和m?我知道这是可能的,但这会导致难以读取/维护代码。它会终止,因为您有系统(“暂停”)返回后。它将永远不会被调用,并且程序在打印其输出后终止。作为旁注,您的行
aa=(1/2)
相当于
aa=0
,因为1/2是整数除法,并且只有在这之后,您才能转换为float。请参见()。此外,您还可以添加关于检查输入操作是否存在可能的错误的内容。