c语言问题求助,请帮忙修改一下程序,为什么答案总是0拜托了各位 谢谢

2024-11-28 15:00:05
推荐回答(2个)
回答1:

逻辑比较混乱,所以大概算重写敬槐了 void main() {int gcd(int,int); int r,a,b,temp,m; scanf("%d,%d",&a,&b); if(a<迟皮b) {temp=a; a=b; b=temp; } while( ( r = a % b ) != 0 ) { a = b; b = r; } printf("%d"码稿差, b); }

回答2:

1、看了你的代码, 我兄贺的理解是这样:想输入两个整数,然后将其中较大的数除以较小的数,看能不能整除,如果能就输出较小的数,如果不能整除,就将它们的余数(第一次得到的余数),和其中较小的一个数进行取余(第二次得到的余数),如戚尘碧果余数为0,就输出这个余数,如果余数不为0就将第二次得到的余数再次和那个较小的数取余,这样直到能能除尽,才把这个余数输出。不知道你是高举不是这个意思! 2、if(r=0);你这里是不是错了,我不清楚你具体想做什么,但这里应该逻辑表达式为if(r==0),而不是赋值语句。 3、for(;r!=0;) { r=gcd(b,r); m=r; printf("%d",m); } 这里是不是应该会出现,死循环的情况,如如果输出的两个数为 7和3 这是 r=4, 而3/4 余数为4 明显 这时就会出现死循环!如果不想出现死循环的情况,就要再次进行交换!