有以下递归函数求最大公约数的程序, 则程序的执行结果是( )。#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)); }
举一反三
- 读程序从键盘输入 1902 , 则程序的输出结果是 :( ) int fun(int n) { int m=0,c; while(n!=0) { c=n%10; m=m*10+c; n=n/10; } return(m); } int main() { int m; scanf("%d",&m); printf("%d\n",fun(m)); return 0; }
- 以下程序的运行结果是( )。#include [stdio.h]int f(int m, int n){ return m > n ? m : n;}main(){ int x = f(5, 3); printf("%d\n", x);}
- 编写用辗转相除法求两个数最大公约数的函数,调用该函数求两个数的最大公约数和最小公倍数。 #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); }
- 下列程序的作用是求两个正整数m,n的最大公约数,请补充程序。def gcd(m,n): if m<n: m,n=n,m if m%n==0: ① else: return ② ans=gcd(84,342)print(ans)
- 递归法求两个数的最大公约数。 函数接口定义: 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