求两个整数最大公约数

求两个整数的最大公约数

#include 
int main()
{
    int y(int a,int b);//声明最大公约数调用函数
    int a,b;
    scanf("%d %d",a,b);
    printf("最大公约数=%d\n",y(a,b));
    return 0;
}
int y(int a,int b)
{
    int t,m;//m为最大公约数
    while(a!=b)
    {
    if(a>b)
    {
    t=a-b;
    if(t==b)
    {a=t;m=t;}
    else
    a=t;
    }
    else if(aif(t==a)
    {b=t;m=t;}
    else
    b=t;
    }
    else if(a==b)
    m=a;
    }
    return m;
}

我输入了3和9为什么没有运行结果

img

代码问题在第6行: scanf("%d %d",a,b); 变量前漏了'&'符,应修改为: scanf("%d %d",&a,&b);
其他正确。

#include <stdio.h>
int main()
{
    int y(int a, int b);//声明最大公约数调用函数
    int a, b;
    scanf("%d %d", &a, &b); //scanf("%d %d", a, b);
    printf("最大公约数=%d\n", y(a, b));
    return 0;
}
int y(int a, int b)
{
    int t = 0, m = 1;//m为最大公约数
    while (a != b)
    {
        if (a > b)
        {
            t = a - b;
            if (t == b)
            {
                a = t; m = t;
            }
            else
                a = t;
        }
        else if (a < b)
        {
            t = b - a;
            if (t == a)
            {
                b = t; m = t;
            }
            else
                b = t;
        }
        else if (a == b)
            m = a;
    }
    return m;
}

程序流程是,先进入main函数,然后调用您定义的函数,但未发现您前面有函数声明,所以就跳过了。
①你可以把int y函数放在main函数前面
②或者在前面声明一下,告诉电脑有这个函数,然后他就会去找这个函数