if和for循环的套用

这样写有什么问题

img

img

#define _CRT_SECURE_NO_WARNINGS 1
#include
int main()
{
int n, m;
printf("请输入两个正整数n,m:");
scanf("%d,%d", &n, &m);
if (m > n)
{
int t;
for (t = n;t >= 1;t--)
{
if (m % t == 0 && n % t == 0)
{
printf("%d和%d的最大公约数为:%d\n", m, n, t);
{
int k;
for (k = m;k >= 1;k++)
{
if (k % m == 0 && k % n == 0)
{
printf("%d和%d的最小公约数为:%d\n", m, n, k);
break;
}
}
}
}
}
}
else
{
int j;
for (j = m;j >= 1;j--)
{
if (n % j == 0 && m % j == 0)
{
printf("%d和%d的最大公约数为:%d\n", m, n, j);
{
int o;
for (o = n;o >= 1;o++)
{
if (o % n == 0 && o % m == 0)
{
printf("%d和%d的最小公约数为:%d\n", m, n, o);
break;
}
}
}
}
}
}
return 0;
}


题主代码修改如下,供参考:

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
    int n, m;
    printf("请输入两个正整数n,m:");
    scanf("%d,%d", &m, &n);
    if (m > n)
    {
        int t;
        for (t = n;t >= 1;t--)
        {
            if (m % t == 0 && n % t == 0)
            {
                printf("%d和%d的最大公约数为:%d\n", m, n, t);
                break;
            }
        }
        int k;
        for (k = m;k >= 1;k++)
        {
            if (k % m == 0 && k % n == 0)
            {
                printf("%d和%d的最小公倍数为:%d\n", m, n, k);
                //printf("%d和%d的最小公约数为:%d\n", m, n, k);
                break;
            }
        }
       
    }
    else
    {
        int j;
        for (j = m;j >= 1;j--)
        {
            if (n % j == 0 && m % j == 0)
            {
                printf("%d和%d的最大公约数为:%d\n", m, n, j);
                break;
            }

        }
        int o;
        for (o = n;o >= 1;o++)
        {
            if (o % n == 0 && o % m == 0)
            {
                printf("%d和%d的最小公倍数为:%d\n", m, n, o);
                //printf("%d和%d的最小公约数为:%d\n", m, n, o);
                break;
            }
        }
    }
    return 0;
}