问题 问答题

请编写函数fun,它的功能是:求任意两个正整数的最小公倍数和最大公约数,最小公倍数放在指针变量bei所指的变量中,最大公约数放在指针变量yue所指的变量中。 注意:部分源程序在文件PROG1.C中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 void fun(int m,int n,int*bei,int *yue) {int s=l,i; if(m>n){s=m;m=n;n=S;} for(i=2,s=1;i<m i++) if((m%i=0)&&(n%i=0)){} *yue=s; *bei=S*m*n; } main( ) {int a,b,beishu,yueshu; chscr( ); printf("please input a,b:");scanf("%d,%d,"&a,&b); fun(a,b,&beishu,&yueshu);printf("a,b beishu:%d\n",beishu); printf("a,b yueshu:%d\n",Yueshu); }

答案

参考答案:

解析:void fun(int m,int n,int*bei,int*yue) {int s=l,i; if(m>n){s=m;m=n;n=s;} for(i=2,s=1;i<m;i++) if((m%i==0)&&(n%i==0)) {m=m/i; n=n/i; s=s*i: i=1: } *yue=s;*bei=s*m*n; } 本题考查编程解决一般数学问题的能力。本题函数fun的实现了拐除法,在2~ m之间从小到大依次取数i同时整除m和n,若能整除,则累乘到s中,最后的s就是最大公约数,s*m*n就是最小公倍数。

填空题
问答题 简答题