为什么无法实现输出最大公约数

#include
int main()
{
int a, b, d, i, c;
d = 0; c = 0;
scanf_s("%d%d", &a, &b);
if (a < b)
d = a; a = b; b = d;
i = b;
for (i = b; i >= 1; i--)
{
if (a % i == 0 && b % i == 0)
{
c = i; break;
}
}
printf("%d", c);
return 0;
}

题主的代码修改如下,if(a < b) 那里缺了一对 "{ }" ,供参考:

#include <stdio.h>
int main()
{
    int a, b, d, i, c;
    d = 0; c = 0;
    scanf_s("%d%d", &a, &b);
    if (a < b)
    {           //修改  这段里缺了一对 {}
        d = a; a = b; b = d;
    }           //修改
    i = b;
    for (i = b; i >= 1; i--)
    {
        if (a % i == 0 && b % i == 0)
        {
            c = i; break;
        }
    }
    printf("%d", c);
    return 0;
}

#include<stdio.h>
int main()
{
    int m, n, temp, i;
    printf("Input m & n:");
    scanf("%d%d", &m, &n);
    if(m<n)  /*比较大小,使得m中存储大数,n中存储小数*/
    { /*交换m和n的值*/
        temp=m;
        m=n;
        n=temp;
    }
    for(i=n; i>0; i--)  /*按照从大到小的顺序寻找满足条件的自然数*/
        if(m%i==0 && n%i==0)
        {/*输出满足条件的自然数并结束循环*/
            printf("The GCD of %d and %d is: %d\n", m, n, i);
            break;
        }
   
    return 0;
}