用C语言自定义一个函数,运用指针赋值的方法实现求两个数的最大公约数。 编写一个求最大公约数的函数,并编写调用这个求最大公约数函数的...

作者&投稿:历标 (若有异议请与网页底部的电邮联系)
#include<stdio.h>

void gysh(int *n,int *m,int *v)
{
int t;

while(*m)
{
t=*m;
*m=*n%*m;
*n=t;
}
*v=*n;
}

int main()
{
int n,m,v;

printf("请输入两个整数:");
scanf("%d%d",&n,&m);
printf("%d,%d的最大公约数是",n,m);
gysh(&n,&m,&v);
printf("%d\n",v);
return 0;
}

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("<格式化字符串>",<参量表>)。
其中格式化字符串用于指定输出格式。格式控制串可由格式字符串和非格式字符串两种组成。

在解有关最大公约数、最小公倍数的问题时,常用到以下结论:
如果两个自然数是互质数,那么它们的最大公约数是1,最小公倍数是这两个数的乘积。例如8和9,它们是互质数,所以(8,9)=1,[8,9]=72。
如图所示:


如果两个自然数中,较大数是较小数的倍数,那么较小数就是这两个数的最大公约数,较大数就是这两个数的最小公倍数。例如18与3,18÷3=6,所以(18,3)=3,[18,3]=18。
两个整数分别除以它们的最大公约数,所得的商是互质数。例如8和14分别除以它们的最大公约数2,所得的商分别为4和7,那么4和7是互质数。
两个自然数的最大公约数与它们的最小公倍数的乘积等于这两个数的乘积。例如12和16,(12,16)=4,[12,16]=48,有4×48=12×16,即(12,16)× [12,16]=12×16。
GCD(a,b) is the smallest positive linear combination of a and b. a与b的最大公约数是最小的a与b的正线性组合,即对于方程xa+yb=c来说,若x,a,y,b都为整数,那么c的最小正根为gcd(a,b).
扩展资料:
如果数a能被数b整除,a就叫做b的倍数,b就叫做a的约数。约数和倍数都表示一个整数与另一个整数的关系,不能单独存在。如只能说16是某数的倍数,2是某数的约数,而不能孤立地说16是倍数,2是约数。
"倍"与"倍数"是不同的两个概念,"倍"是指两个数相除的商,它可以是整数、小数或者分数。"倍数"只是在数的整除的范围内,相对于"约数"而言的一个数字的概念,表示的是能被某一个自然数整除的数。
几个整数,公有的约数,叫做这几个数的公约数;其中最大的一个,叫做这几个数的最大公约数。例如:12、16的公约数有1、2、4,其中最大的一个是4,4是12与16的最大公约数,一般记为(12,16)=4。12、15、18的最大公约数是3,记为(12,15,18)=3。
参考资料来源:百度百科-最大公约数

C语言 写一个函数交换两个数的值,为什么一定要用指针?
答:fun2(),看似的确使用了指针,但还是失败,因为这里是将aa和bb的地址给交换了,而并没有交换aa和bb的值。在这里由于未给c赋值,c中并没有确定的值,c中的值是不可预见的。此时c可能指向一个未知的存储单元。而严重的情况是,该单元的数据可能是有用的,因此fun2()不但没有实现两个数的交换,...

c语言中函数指针是什么 有什么用 举个实例
答:int (*f) (int x); /* 声明一个函数指针 */ f=func; /* 将func函数的首地址赋给指针f */ 或者使用下面的方法将函数地址赋给函数指针:f = &func;赋值时函数func不带括号,也不带参数,由于func代表函数的首地址,因此经过赋值以后,指针f就指向函数func(x)的代码的首地址。下面的程序说明...

c语言指针函数输出一个数的因数?
答:f = factors(n, &count); // 调用factors函数 printf("%d的因数有:", n);for (int i = 0; i < count; i++) { printf("%d ", f[i]);} printf("\n");free(f); // 释放内存 return 0;} 在这个示例中,我们定义了一个指针函数 factors(),该函数接受一个整数 n 和一个...

C语言:1.用一个函数实现两个字符串的比较,即自己写一个strcmp函数. 2...
答:else if(compare(a,b)==1){ printf("a>b\n") ;} else { printf("a<b\n") ;} printf("%d\n",compare(a,b)) ;return 0;} 第二题:include <stdio.h> int main(){ int i,j ;int a[2][3],b[2][3] ;printf("请输入第一个矩阵:\n") ;for (i=0; i<2; i++){...

c语言中自定义一个返回指针的函数,为什么在主函数中调用时,不能引用这...
答:返回的是个指针,也就是个地址,如果你要引用的是这个地址,没有问题的。如果你想通过这个地址去引用它所指向的变量,那就不一定了,因为那个变量不一定还存在。就好比你某次去某个地方玩,发现一家小饭店很好,你记下它的门牌号带回来了。在你回家后,你还可以看这个你自己记下的门牌号,看一千遍...

C语言如何声明一个返回函数指针的函数?
答:C语言指向函数的指针承载的信息比较复杂,组织起来要素要写全。根据指向函数的指针的书写语法,下面的代码就是一个返回函数指针的函数:int (*f(void))(int){//f是函数,没有参数,返回指向一个函数的指针;这个被指向的函数有一个int型形参,且返回一个int值 return fun;//fun是个函数名,必须...

C语言编写:"函数fun,其功能是:在字符串中所有数字字符前加一个“*...
答:代码:include<stdio.h> include<string.h> void main(){ char str[40]="s23fdrt45";char *p,*p1;int len = strlen(str);scanf("%s",str);p = str;while(*p != '\0'){ if(*p>='0' && *p<='9'){ len = strlen(p);p1 = p+len+1;while(p1>p){ p1 = *(p1-1);p1...

写一函数 将一个3x3的整型矩阵转置 用指针方法 加二维数组 c语言急
答:用函数void trans(int *a, int n); 参数1用数组第一个元素的地址,第二个参数是3 include <stdio.h> void trans(int *a, int n){int i,j,t;for (i=0;i<n;i++)for (j=0;j<=i;j++){t= a[j*n+i]; a[j*n+i]=a[i*n+j];a[i*n+j]=t;}} main(){int a[3]...

C语言,在函数里要输入一个数组怎么办
答:用指针就可以了,如 定义有int a[5];则这样定义函数:int fun(int *p, int size){ //p为数组的首地址 //size为数组的大小 //传递进去后可以像操作a一样用下标操作p //如p[0], p[4]...} 传递参数给函数可以这样写:fun(a, 5);若是多维数组,则第一维大小不给出,只指定后面的维数大小...

...编写函数可以对任意个整型元素的数组排序,用指针实现
答:看看我这个,自动生成N个整数的随机数,并排序,还可以查找,有点乱啊不好意思 include<stdio.h> include<stdlib.h> include int * getnumbers(int a[],int N){int i;srand((unsigned)time(NULL));for(i=0;i<N;i++){ a[i]=rand()%98+1;}return a;}int * bubble(int a[],in...