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
",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("<格式化字符串>",<参量表>)。

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



#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)...
");
if(scanf("%d%d",&m,&n)!=2 || m<1 || n<1){
printf("Input error, exit...
");
return 0;
}
printf("
The GCD of %d & %d is %d
",m,n,mygcd(m,n));
printf("The LCM of %d & %d is %d
",m,n,mylcm(m,n));
return 0; 
}

运行样例:



#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("输入有误!
");
return -1;
}
printf("%d 与 %d的最大公约数为: %d
",x,y,gcd(x,y));
printf("%d 与 %d的最小公倍数为: %d
",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


C语言用两个函数求两数最大公约数和最小公倍数~

可以给出一定的思路给你:
18, 36
最大公因数 = 18
最小公倍数 = 36
18 = 2 * 9 = 2 * 3 * 3 = 2 * 3^2
36 = 2 * 18 = 2 * 2 * 9 = 2 * 2 * 3 * 3 = 2^2 * 3^2

最大公因数 = 18 = 2 * 3 * 3 = 2 * 3^2
最小公倍数 = 36 = 2 * 2 * 3 * 3 = 2^2 * 3^2

#include /*请编写两个自定义函数,分别实现求两个整数的最大公约数和最小公倍数,并用主函数调*/int GongYin(int a,int b) //辗转相除法求最大公约数,有问题请自行度娘之{int temp;if(a<b) //保证a比b大,方便下面进行运算{temp=a;a=b;b=temp;}if(a%b==0)return b;a=a-b;if(a==1)return a;elsereturn GongYin(b,a);}int GongBei(int a,int b)//利用 a,b最小公倍数=a*b/最大公约数 可求{return a*b/GongYin(a,b);}int main(){int n,m;scanf("%d%d",&n,&m);printf("%d,%d的最大公因数是:%d,最小公倍数是%d.
",n,m,GongYin(n,m),GongBei(n,m));}

c语言编写两个自定义函数,分别实现求两个整数的最大公约数和最小公倍...
答: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...

C语言 输入一个4*4矩阵,编写两个函数分别实现对二维数组元素的行与行...
答:int l1,int l2);//指定的两行交换数据void cl(int (*nums)[4],int l1,int l2);//指定的两列交换数据int main(){ int nums[4][4],i,j,h1,h2,l1,l2,(*p)[4]; for(i=0;i<4;i++) { printf("\n输入4*4矩阵的第%d行的4个数:",i+1); ...

高手进!C语言编程:定义两个函数,功能是分别求出某个整数的平方值和立方...
答:int pingfang(int i){ int m;m=i*i;return m;} int lifang(int j){ int n;n=j*j*j;return n;}

求c语言编写~~编写两个函数,分别求两个整数的最大公约数和最小公倍...
答:printf("请输入两个整数:");scanf("%d%d",&a,&b);q=yue(a,b);p=bei(a,b,q);//最小公倍数=两数的乘积除以它们的最大公约数 printf("最大公约数是:%d\n最小公倍数是:%d\n",q,p);}

C语言程序设计问题:编写两个名为max的重载函数,分别实现求两个整数及...
答:if (x><>输入两个实数#include <;<"cout< cin>endl,f2)<ch2;cout<> return 0:":"} int main(){ int x;;<输入两个整数;max(x;cout<endl;f2,int y){ if (x>ch1>,y)<,ch2)< } float max(float x;f1>y)return x;y)return x;max(ch1;endl;float f1;<x><"y;ret...

c语言编写两个函数,分别求出两个整数的最大公约数和最小公倍数。用主...
答:include "stdio.h"int gcd(int a,int b){int r;while(r=a%b)a=b,b=r;return b;}int lcm(int a,int b){return a/gcd(a,b)*b;}int main(int argc,char *argv[]){int x,y;printf("Please enter 2 positive integers...\n");if(scanf("%d%d",&x,&y)!=2 || x<1 ||...

用C语言编写两个函数,分别完成十进制和二进制之间的转换。
答:include <stdio.h>int main(){ int Type,a,b[10],i=0,c=0; printf("请输入转换类型,1:十进制转二进制;2:二进制转十进制\n"); scanf("%d",&Type); printf("请输入原数据\n"); scanf("%d",&a); switch(Type) { case 1: while(a!=0) {...

C语言编写两个函数,分别求其最大公约数和最小公倍数。并在主函数中输 ...
答:void main(){ int i,j,k,m;scanf("%d%d",&i,&j);k=gy(i,j);m=gb(i,j);printf("最大公约数为%d\n",k);printf("最大公倍数为%d\n",m);} int gy(int a,int b){ int temp,r;if(a

C语言 编写两个子函数,分别为strlength和strswap,实现字符串长度的求...
答:nt strlen(char s[]){ int len=0 ,i;for(i=0;s[i]!='\0';i++)len++;return len;}

C语言中编写两个函数
答:p=p->next;/*p指向下一个结点*/ }while(p!='\0');/*未到链表尾,继续循环*/ printf("->end\n");} } int main(){ SLIST *p;p=creat();take(p);} 我在我的VS2010里面编译运行,没有崩溃 输入 2 3 1 输出 head->2->3->end 输入 1 输出 Linklist is null!