三个数组合成数运算编程

C语言程序设计函数问题
有3个非零十进制数字,用它们可以组合出6个不同的三位数,这些三位数的和是2886。如果将这3个数字按从大到小和从小到大的顺序依次排列成两个三位数,它们的差是396。试编写函数void func(int a[])找出这三个数字,并存放在数组a中;在主函数中调用函数func,并将结果数组中每个元素的值写入到数据文件中。

简单实现代码如下(包含注释),望采纳

#include <stdio.h>
void func(int a[]) {
    // 枚举第一个数字
    for (int i = 1; i < 10; i++) {
        // 枚举第二个数字
        for (int j = 0; j < 10; j++) {
            // 枚举第三个数字
            for (int k = 0; k < 10; k++) {
                // 如果三个数字各不相同
                if (i != j && i != k && j != k) {
                    // 计算三位数的和
                    int sum = i * 100 + j * 10 + k;
                    // 计算大小顺序排列后的两个三位数
                    int a = i * 100 + j * 10 + k;
                    int b = i * 100 + k * 10 + j;
                    // 如果满足题目条件,则存入数组并退出循环
                    if (sum == 2886 && a - b == 396) {
                        a[0] = i;
                        a[1] = j;
                        a[2] = k;
                        return;
                    }
                }
            }
        }
    }
}
int main() {
    int a[3];
    func(a);
    for (int i = 0; i < 3; i++) {
        printf("%d ", a[i]);
    }
    printf("\n");
    return 0;
}