求最大公因数和最小公倍数,哪里错了

img

#include

int main()
{
    int a,b,i,min,max;
    scanf("%lf %lf",&a,&b);
    min = (afor(i = min;i>= 1;i--)
    {
        if((a%i==0)&&(b%i==0))
        {
            printf("bigest num:%lf",i);
            break;
        }
    }
    printf("\n");
    max = (a>b)?a:b;
    for(i = max;;i++)
    {
        if((i%a==0)&&(i%b==0))
        {
            printf("min num:%lf",i);
            break;
        }
    }
    
    return 0;
}

参考GPT的回答和自己的思路,您的程序存在一些错误,可能是因为类型不匹配和printf语句格式错误导致的。

1.输入应该使用%d格式,而不是%lf格式,因为您使用的是整数变量。
2.在输出最大公约数和最小公倍数时,应该使用%d格式,而不是%lf格式,因为它们是整数。
3.在printf语句中,应该使用\n来换行,而不是留空行。
3.在找到最小公倍数后,应该退出循环,以避免不必要的计算。
下面是一个修正后的程序:

#include<stdio.h>
 
int main()
{
    int a, b, i, min, max, gcd, lcm;
    scanf("%d %d",&a,&b);
    min = (a<b)?a:b;
    for(i = min; i >= 1; i--)
    {
        if((a % i == 0) && (b % i == 0))
        {
            gcd = i;
            printf("GCD:%d\n", gcd);
            break;
        }
    }
    max = (a>b)?a:b;
    for(i = max; ; i++)
    {
        if((i % a == 0) && (i % b == 0))
        {
            lcm = i;
            printf("LCM:%d\n", lcm);
            break;
        }
    }
    return 0;
}

希望这能帮助您找到问题所在并解决它们。
回答不易,还请采纳!!!

int类型要用%d,不要写%lf
你对0做除法肯定报错了呀

a,b,i都是整型,但你写的输入和输出都是%lf,类型不匹配

很简单,把%1f换成%d即可