#include<stdio.h>
int main()
{int a,b,c,min;
scanf("%d%d\n",&a,&b);
if(a<b){a=min;}
else{b=min;}
c=min;
while(a%c!=0||b%c!=0)
{c--;
}
printf("%d\n",c);
return 0;
}
两处问题,见注释处,供参考:
#include<stdio.h>
int main()
{
int a,b,c,min;
scanf("%d%d",&a,&b);//scanf("%d%d\n",&a,&b); 这行多了 '\n'
if(a<b){min=a;} //a=min;
else {min=b;} //b=min;
c=min;
while(a%c!=0 || b%c!=0)
{
c--;
}
printf("%d\n",c);
return 0;
}
在比较a和b的大小时,应该是min=a或者min=b吧
你的min没有初始化,对a,b,c赋值会报错,作者的想法应该把ab中最小值给min吧,赋值语句是从右到左的,改为min=a,下面也如此就OK了
min没有初始化
#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;
}