请帮我用数组,指针,文件,机构体完成:求两个正整数的最大公约数和最小公倍数

 

参考GPT和自己的思路:

好的,根据您的问题,我可以给您一个通用的代码模板。具体实现如下:

#include <stdio.h>

// 最大公约数函数
int gcd(int a, int b) {
    return b == 0 ? a : gcd(b, a % b);
}

// 最小公倍数函数
int lcm(int a, int b) {
    return a * b / gcd(a, b);
}

// 结构体定义
struct Numbers {
    int num1;
    int num2;
};

int main() {
    Numbers nums;
    // 从文件读取数据
    FILE *fp = fopen("input.txt", "r");
    fscanf(fp, "%d%d", &nums.num1, &nums.num2);
    fclose(fp);

    // 计算最大公约数和最小公倍数
    int g = gcd(nums.num1, nums.num2);
    int l = lcm(nums.num1, nums.num2);

    // 输出结果到文件
    fp = fopen("output.txt", "w");
    fprintf(fp, "%d %d", g, l);
    fclose(fp);

    return 0;
}

上述代码中,我们使用结构体 Numbers 来存储需要求最大公约数和最小公倍数的两个数字,使用指针 fp 来打开并读取输入文件 "input.txt",然后我们计算最大公约数和最小公倍数,并将结果输出到输出文件 "output.txt" 中。函数 gcd 实现最大公约数算法,函数 lcm 实现最小公倍数算法。

希望这个代码示例可以帮助您解决问题。