C语言中编写两个函数,分别求最大公约数和最小公倍数,在主函数中输出结果。 使用没有返回值函数,通过定义全局变量完成本题要求的功能
时间: 2024-12-13 07:19:29 浏览: 6
C语言练习题
5星 · 资源好评率100%
在C语言中,你可以通过递归的方式来实现最大公约数(GCD)和最小公倍数(LCM)的计算,因为这两个值之间存在特定的关系:gcd(a, b) * lcm(a, b) = a * b。我们可以先编写一个无返回值的函数来计算GCD,然后利用这个GCD函数来计算LCM。
```c
#include <stdio.h>
// 使用欧几里得算法计算最大公约数(无返回值)
void gcd(int a, int b, int* result) {
if (b == 0) {
*result = a;
} else {
gcd(b, a % b, result);
}
}
// 计算最小公倍数(基于GCD)
void lcm(int a, int b) {
int temp_gcd; // 临时存储GCD
gcd(a, b, &temp_gcd); // 首先计算GCD
return a * b / temp_gcd;
}
int main() {
int num1, num2;
printf("请输入两个整数: ");
scanf("%d %d", &num1, &num2);
// 先计算GCD
int gcd_result;
gcd(num1, num2, &gcd_result);
// 然后计算LCM
int lcm_result = lcm(num1, num2);
printf("两数的最大公约数是: %d\n", gcd_result);
printf("两数的最小公倍数是: %d\n", lcm_result);
return 0;
}
```
在这个程序中,`gcd`函数是一个无返回值的函数,它接收两个整数a和b以及一个指向整数的指针`result`。当b为0时,说明已经找到了最大公约数,将a的值赋给`*result`。然后在`main`函数中,我们首先计算两个数的最大公约数,再利用该GCD值来计算最小公倍数并输出结果。
阅读全文