c语言编写两个自定义函数,分别实现求两个整数的最大公约数和最小公倍数,并用主函数调用这两个函数

c语言编写两个自定义函数,分别实现求两个整数的最大公约数和最小公倍数,并用主函数调用这两个函数两个整数由键盘输入得到

#include<stdio.h>

#include<stdlib.h>

int HCF(int x,int y);//定义最大公约数函数

int LCM(int p,int q);//定义最小公倍数函数

int main()

{

int a,b,hcf,lcm;

scanf("%d%d",&a,&b);//输入两个整数

hcf=HCF(a,b);//调用最大公约数函数

lcm=LCM(a,b);//调用最小公倍数函数

printf("HCF is%d LCM is%d\n",hcf,lcm);//输出最大公约数和最小公倍数

system("pause");

return 0;

}

int sum;//定义外部变量sum

//最大公约数函数

int HCF(int x,int y)

{

int i,k,m,n;

sum=1;

k=x>y?y:x;

i=2;

while(i<=k){

m=x%i;

n=y%i;

if(m==0&&n==0){

sum*=i;

x/=i;

y/=i;

i=2;

}

else

i++;

}

return sum;

}

//最小公倍数函数

int LCM(int p,int q)

{

int lc;

lc=p*q/sum;

return lc;

}

扩展资料:

用法:

1、printf()函数是格式化输出函数,一般用于向标准输出设备按规定格式输出信息。

格式输出,它是c语言中产生格式化输出的函数(在stdio.h中定义)。用于向终端(显示器、控制台等)输出字符。格式控制由要输出的文字和数据格式说明组成。

要输出的文字除了可以使用字母、数字、空格和一些数字符号以外,还可以使用一些转义字符表示特殊的含义。

简单点理解就是,在一段程序中你正确使用该函数,可以在该程序运行的时候输出你所需要的内容。

2、printf函数是一个标准库函数,它的函数原型在头文件“stdio.h”中。但作为一个特例,不要求在使用printf函数之前必须包含stdio.h文件。

printf()函数的调用格式为:printf("<格式化字符串>",<参量表>)。

其中格式化字符串用于指定输出格式。格式控制串可由格式字符串和非格式字符串两种组成。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-01-04
#include "stdio.h"
int mygcd(int a,int b){
    int r;
    while(b){
        r=a%b;
        a=b;
        b=r;
    }
    return a;
}
int mylcm(int x,int y){
    return x/mygcd(x,y)*y;
}
int main(int argv,char *argc[]){
int m,n;
printf("Input m & n(int m,n>0)...\n");
if(scanf("%d%d",&m,&n)!=2 || m<1 || n<1){
printf("Input error, exit...\n");
return 0;
}
printf("\nThe GCD of %d & %d is %d\n",m,n,mygcd(m,n));
printf("The LCM of %d & %d is %d\n",m,n,mylcm(m,n));
return 0; 
}

运行样例:

第2个回答  2018-01-04
#include<stdio.h>
//求最大公约数函数
int gcd(int a,int b)
{
int temp,r;
    int v;
    
    if(a<b)
    {temp=a; a=b; b=temp;}  //将大数放在a中,小数放在b

    v=a*b;
    r=a%b;
    while(r!=0)
    {
        a=b;
        b=r;
        r=a%b;
    }
return b;
}
//求最小公倍数函数
int lcm(int a,int b)
{
return (a*b)/gcd(a,b);
}
int main()
{
int x,y;
scanf("%d%d",&x,&y);
if(x<=0 || y<=0){
printf("输入有误!\n");
return -1;
}
printf("%d 与 %d的最大公约数为: %d\n",x,y,gcd(x,y));
printf("%d 与 %d的最小公倍数为: %d\n",x,y,lcm(x,y));
return 0;
}

//示例运行结果
F:\c_work>a.exe
24 36
24 与 36的最大公约数为: 12
24 与 36的最小公倍数为: 72

F:\c_work>a.exe
1 8
1 与 8的最大公约数为: 1
1 与 8的最小公倍数为: 8

本回答被提问者采纳
相似回答