编写用辗转相除法求两个数最大公约数的函数,调用该函数求两个数的最大公约数和最小公倍数。 #include "stdio.h" int gcd(int m,int n) { int r; do {【1】; m=n; n=r; } while(r!=0); return 【2】 ; } main() { int a,b,x,y; scanf("%d%d",&a,&b); x=gcd(【3】); y=a*b/x; /*求a和b的最小公倍数*/ printf("GCD=%d,LCM=%d\n",x,y); }
举一反三
- 假设传递给形参x和y的值是24和16,gcd (x,y)函数是求x和y的最大公约数,写出下列函数的运行结果: int lownum ( int x,int y) { printf (“ %d\n”,x * y /gcd (x,y)); return 0; }
- gcd (x,y)函数的功能是求x和y的最大公约数,在划线处填写正确的表达式: int gcd ( int x , int y) { if ( y == 0) return x; else return ____________________; }
- 有以下递归函数求最大公约数的程序, 则程序的执行结果是( )。#include<stdio.h>int gcd(int m, int n){ int g; if (n == 0) g=m; else g=gcd(n,m%n); return (g); }void main( ){ int m=21,n=7; printf(“%d”,gcd(m,n)); }
- 以下程序没有语法问题的是() A: B: include<;stdio.h>;int main( ){int x , y = 5 ; printf( "%d\n" , x / y ) ; return 0 ;} C: D: include<;stdio.h>;int main( ){int x = 3 ;y = 5 ; printf( "%d\n" , x / y ) ; return 0 ;} E: F: include<;stdio.h>;int main( ){int x = 3 ,y ; printf( "%d\n" , x / y ) ;y = 5; return 0 ;} G: H: include<;stdio.h>;int main( ){int x = 3 , y = 5 ; printf( "%d\n" , x / y ) ; return 0 ;}
- 递归法求两个数的最大公约数。 函数接口定义: int gys(int m,int n); 其中 m 和 n 都是用户传入的参数。函数用递归法求m 和 n的最大公约数。 #include int gys(int m,int n) { } int main() { int m,n; scanf("%d%d",&m,&n); printf("%d ",gys(m,n)); return 0; } 输入样例: 24 16 输出样例: 8