回 帖 发 新 帖 刷新版面

主题:[讨论]求两个正整数的最小公倍数和最大公约数的程序错在哪?

#include<iostream.h>
void main()
{
    int a,b;
    int x,t;
        x=a*b;
    cout<<"请输入两个正整数: ";
    cin>>a>>b; 
    if(a<b)
    {
        t=a;a=b;b=t;
    }
    while(t=a%b)
    {
        a=b;b=t;
    }
    cout<<"最大公约数是: "<<b<<endl;
    cout<<"最小公倍数是: "<<x/b<<endl;
}
~~这个程序输入数字运行后是错误的结果    下面是正确的程序:
#include<iostream.h>
void main()
{
    int a,b;
    int x,t;
    cout<<"请输入两个正整数: ";
    cin>>a>>b; 
    x=a*b;
    if(a<b)
    {
        t=a;a=b;b=t;
    }
    while(t=a%b)
    {
        a=b;b=t;
    }
    cout<<"最大公约数是: "<<b<<endl;
    cout<<"最小公倍数是: "<<x/b<<endl;
}
        ~~想问问这个程序是哪错了?

回复列表 (共2个回复)

沙发

x=a*b;这句的位置错了。你的a、b还没有输入,哪里有值。x就永远是一个值。而且你的a、b没有初始化。那么x就是个不可确定的值。

板凳

我晕。lz要好好分析程序。
你的a,b还没赋值就相乘赋值给x,这样得到的x是没有意义的。
再怎么往下计算?

我来回复

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