C语言计算最大公约数最小公倍数,要求调用函数,不使用数组和地址取值我这样做怎么算不了的?
#include<stdio.h>intMinCommonMultiple(int,int);intMaxCommonFaxtor(int,int);intmain(){...
#include<stdio.h> int MinCommonMultiple(int,int); int MaxCommonFaxtor(int,int); int main() { int a,b,i=0,y,c,p; printf("请输入两个整数,用空格隔开\n"); scanf("%d %d",&a,&b); MinCommonMultiple(a,b); MaxCommonFaxtor(a,b); printf("最大公约数为:%d\n最小公倍数为:%d\n",y,i); } int MinCommonMultiple(int a,int b) { int i=0,c,e; e=b; do { i++; b=e*i; c=b%a; if (c==0) i=a; } while (c!=0); return i; } int MaxCommonFaxtor(int a,int b) { int p,y; p=a%b; if (p!=0) { do { b=a; a=p; p=b%a; } while (p!=0); y=p; } else y=a; return y; }
展开
展开全部
几个地方需要修改: 1. 最大公约数函数,首先必须满足a>=b,所以你在函数开始就应该先判断a是不是比b大,如果a比b小,则需要先交换a,b的值; 2. p=a%b;,如果p=0,那么最大公约数是b不是a,所以你do...while循环体是错误的,需要修改过来,而且既然你开始就已经进行了一次取模,则后面的循环不该用do...while,而应该用while循环: p = a % b; while(p != 0) { a = b; b = p; p = a % b; } 3. 最小公倍数=a*b/(ab最大公约数),所以你最小公倍数的方法可以修改为:int MinCommonMultiple(int a, int b, int maxFaxtor) { return a * b / maxFaxtor; }
满意请采纳
满意请采纳
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询