想知道这个求最大公约数的哪里写错了,求不出来诶

img

没看懂你的逻辑。。。参考如下:

#include <stdio.h>
int main()
{
    int i,a,b,t;
    scanf("%d %d",&a,&b);//输入数a,b
    if(a>b)//比较a,b大小,如果a>b则交换,结果为a
    {
        t=a;
        a=b;
        b=t;
    }
    for (i = a; i >= 1; i--)//以较小的a为基数,每内次i减小1循环求最大公容约数
    {
        if (a % i == 0 && b % i == 0)//如果两数均能整除某数则该数为最大公约数
        {
            printf("最大公约数是:%d\n",i);
            break;//已得到最大公约数后跳出循环
        }
    }
    return 0;
}

题主的代码两处错误,修改如下,见注释:

#include<stdio.h>
int main()
{
    int x, y, t, r;
    printf("put num:\n");
    scanf("%d%d", &x, &y);//scanf("%d,%d\n",&x,&y);
    if (x < y)
    {
        t = x; x = y; y = t;
    }
    r = x % y;
    while (r != 0)
    {
        x = y;
        y = r;
        r = x % y;
    }
    printf("max is %d\n", y);//printf("max is %d\n", r);
    return 0;
}