没看懂你的逻辑。。。参考如下:
#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;
}