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;
}