关于for循环中双if的一些疑问

题目的要求是设计一个求最大公约数的程序。

如图

img

img


一开始的程序设计是如图一,我发现当将双if从句合并成一个if从句的时候得到的结果是相同的,请问一下,这是什么原因?

第17行 i=a 开始的,第一个循环就结束了 ,打印出来应该是 a吧?

差不多这样写
for (i = a-1; i > 0; i--) {
if(a%i == 0 && b %i == 0) {
printf("%d", i);
break;
}
}

14行 if(m=n) 错了,应为 if(m==n)

有没有这么一种可能,你两个程序写的都是错的