大圣归来手机动态壁纸:急救啊~这条编程考试题怎么做啊?

来源:百度文库 编辑:高校问答 时间:2024/05/03 22:52:47
编写一个函数getGCD_LCM(),计算两个正整数的最大公约数和最小公倍数.计算结果通过参数返回.试问:
1. 这个函数应该有几个参数,参数的类型分别为什么?(20分)
2. 完成该函数的定义.(40分)
3. 编写主函数调用之.(40分)

1. 这个函数应该有几个参数,参数的类型分别为什么?
2个,指针类型。

2. 完成该函数的定义
getGCD_LCM(int *m,int *n)
{
int r;
while(r=*m%*n&&*n!=0){*m=*n;*n=r;}
/*欧几里德算法:m和n两个数,先用m除以n,余数为r,n给m,r给n,依次类推,直到r为0。r即为m和n的最大公约数。*/
}

3. 编写主函数调用
#include <stdio.h>
Main()
{
int *m,*n,temp,p;
printf("请输入两个正整数");
scanf("%d%d",m,n);
p=*m**n;/*用于求最小公倍数用*/
if(*m<*n)
{
temp=*m;
*m=*n;
*n=temp;
}
getGCD_LCM(m,n);

printf("两整数的最大公约数为: %d",*n);
printf("两整数的最小公倍数为: %d",p/*n);
}

小弟不才,紧供参考!

getGCD_LCM(int *n1,int *n2)
{
int t;
while(*n2!=0)
{t=*n1/*n2;
*n1=*n2
*n2=t;
}
}
main()
{
int *n1,*n2;a,b,t;
printf("请输入两个正数");
scanf("%d%d",n1,n2);
if(*n1<*n2)
{
t=*n1;
*n1=*n2;
*n2=t;

}
a=*n1;
b=*n2;
getGCD_LCM(n1,n2);
printf("两整数的最大公约数为%d",*n2);
printf("两整数的最小公倍数为%d",a*b/(*n2));
}