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; } 展开
 我来答
莫与交欢6887
2014-07-26 · TA获得超过135个赞
知道答主
回答量:133
采纳率:0%
帮助的人:171万
展开全部
几个地方需要修改: 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; }

满意请采纳
雪博学嵇攸
2019-12-07 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:30%
帮助的人:818万
展开全部
把main函数换成下面这样试试...

int
main(){ int
a,b,i=0,y,c,p; printf("请输入两个整数,用空格隔开\n"); scanf("%d
%d",&a,&b); i
=
MinCommonMultiple(a,b); y
=
MaxCommonFaxtor(a,b); printf("最大公约数为:%d\n最小公倍数为:%d\n",y,i); }
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式