作业帮 > 综合 > 作业

C语言 求最大公约数 辗转相除法的问题

来源:学生作业帮 编辑:灵鹊做题网作业帮 分类:综合作业 时间:2024/04/29 20:36:17
C语言 求最大公约数 辗转相除法的问题
while (r=x%y)
{
\x05x=y;
\x05y=r;\x05
}
这是基本的
如果我改成
while(r!=0)
{
r=x%y;
x=y;
y=r;
}
就是错的.
请问第二种为什么是错的?会出现死循环.
C语言 求最大公约数 辗转相除法的问题
==x%y; //这只是个逻辑比较,没有给r赋值
改成
r = x%y; //这才是给r赋值
再问: 打错了。。在编译器里是=
再答: 你代码在while前r有没有初始化
再问: 没有。这个的问题麽?是要给r先赋值x%y?
再答: 先给r一个非0值,但那样做不如第1个方式简练 第1个就是先给r计算结果,然后强制把r转型为bool判断它是不是非0,然后继续循环
再问: 还有就是 第一个方程是什么原理啊?我自己又编的 r=x%y; while(r!=0) {x=y; y=r; r=x%y;} 一样麽?
再答: 对,你这个写法和第1个是等价的