c语言中的赋值问题,,,m=n和n=m一样吗

Python014

c语言中的赋值问题,,,m=n和n=m一样吗,第1张

不一样,=不是我们平时计算数学中的“=”的意思。这里的=号是赋值号的意思,意思是将等号后面的变量值赋值给等号前面的变量。所以这两个的意思是1.m=n,将n的值赋值给m2.n=m,将m的值赋值给n这里并不是说m和n相等的意思。在c语言中,表示两者相等的等号是==,这是表示两个数字相当,当要比较两个字符串是否相等时,就要用strcmp这个函数来确定了

辗转相除法的原理就是:

除数1/ 除数1 ... 余数1

被除数2(除数1) / 除数2(余数1) ... 余数2

被除数3(除数2) / 除数3(余数2) ... 余数3

... ...

直至余数为0为止。

通过以上的分析你发现到规律了吗?没错!!就是反复让上一次的除数作为本次的被除数,上一次的余数作为本次除数。所以就有了 :

r=n%m // r是余数

n=m // n是被除数(下一次就是m作为被除数了!!)

m=r // m是除数(下一次就是r作为除数了!!)

反复如此... 直至余数为0为止。这就是所谓的辗转相除法求最大公因数(最大公约数)。

不是n=m不运行,而是被你 k=0这个语句放错地方了。

这样放置的话,前面的循环中的累加全都“白做”了。

只相当于

for (m=3m>2m--){ k=0for(n=mn>1n--)k=k+m*n}

修改发后的程序,运行结果变了样,不知是否合乎要求?