回 帖 发 新 帖 刷新版面

主题:求助--C++程序编译通过 却无法执行

要求调用两个函数,求两个整数的最小公倍数(LCM)和最大公约数(GCD)。
#include <iostream>
using namespace std;
int main()
{
int a,b,m,n,t;
int GCD(int a,int b);
int LCM(int a,int b,int n);       //函数声明
cout<<"Please enter two integer numbers a,b:";
cin>>a>>b;
if(a==b)
{
    cout<<"两个整数的最小公倍数和最大公约数均为:"<<a<<endl;
}
  else if(a<b)
  {
   t=a;
   a=b;
   b=t;
   n=GCD(a,b);       //调用最大公约数函数,得到返回值m为GCD
   m=LCM(a,b,n);      //调用最小公倍数函数,得到返回值n为LCM
   }
   else
    {
     n=GCD(a,b);  
     m=LCM(a,b,n);      
    }
cout<<"两个整数的最大公约数为:"<<n<<endl;
cout<<"两个整数的最小公倍数为:"<<m<<endl;
return 0;
}

int GCD(int a,int b)
{
  int t,n;
 while(t!=0)
 {t=a%b;
  a=b;
  b=t;
 }
 n=b;
 return n;
}

int LCM(int a,int b,int n)
{
    int m;
    m=a*b;
    m=m/n;
    return m;
}

回复列表 (共5个回复)

沙发

int GCD(int a,int b);
int LCM(int a,int b,int n);       //函数声明
这两行要拿到main函数体外面

板凳

我试了试,好像还是不行,要不你帮忙运行试试?

3 楼

是不是你輸入數據時的格式錯誤?兩個數之間應用空格或TAB隔開:)

4 楼

int GCD(int a,int b)函数中的t和n没赋初值,我在你的程序基础上改了一下,在我这个可以运行
#include <iostream>
using namespace std;

int GCD(int a,int b);
int LCM(int a,int b,int n);       //函数声明

int main()
{
    int a,b,m,n,t;
    cout<<"Please enter two integer numbers a,b:";
    cin>>a>>b;
    if(a==b)
    {
        cout<<"两个整数的最小公倍数和最大公约数均为:"<<a<<endl;
    }
    else if(a<b)
    {
        t=a;
        a=b;
        b=t;
        n=GCD(a,b);       //调用最大公约数函数,得到返回值m为GCD
        m=LCM(a,b,GCD(a,b));      //调用最小公倍数函数,得到返回值n为LCM
    }
    else
    {
        n=GCD(a,b);  
        m=LCM(a,b,GCD(a,b));      
    }
    cout<<"两个整数的最大公约数为:"<<n<<endl;
    cout<<"两个整数的最小公倍数为:"<<m<<endl;
    return 0;
}

int GCD(int a,int b)
{
    int t = -1;
    int n = 0;
    while(t!=0)
    {
        t=a%b;
        a=b;
        b=t;
    }
    n=a;
    return n;
}

int LCM(int a,int b,int n)
{
    int m=0;
    m=a*b;
    m=m/n;
    return m;
}

5 楼


不是的呢,我都试过,谢谢你了

我来回复

您尚未登录,请登录后再回复。点此登录或注册