只有192这一组数啊
授人以渔,不授人以鱼。
/* 求所有这样的三位数,它的2倍,3倍还是三位数,且这三个三位数使用1到9之间不同数字。如n=192,2n=384,3n=576. */ #include <stdio.h> #include <conio.h> #define FALSE 0 #define TRUE !FALSE void Reset_Array(int* Array, int Number); int Check(int Var, int* Array); void main(void) { int i = 1; // 百位数 int j = 1; // 十位数 int k = 1; // 个位数 int Var; // 所求整数 int Array[9]; // 数字使用标志数组, 用过的数字在对应位置为真 for (i = 1; i <= 9; i++) { for (j = 1; j <= 9; j++) { for (k = 1; k <= 9; k++) { Var = i * 100 + j * 10 + k; if ((2 * Var < 1000) && (3 * Var < 1000)) { if ((i != j) && (i != k) && (j != k)) { Reset_Array(Array, 9); Array[i-1] = TRUE; Array[j-1] = TRUE; Array[k-1] = TRUE; if (Check(2 * Var, Array)) { if (Check(3 * Var, Array)) { printf_s("n = %3d, 2n = %3d, 3n = %3d\n", Var, 2 * Var, 3 * Var); } } } } } } } printf_s("\n按任意键结束程序"); _getwch(); } // 重置数组 void Reset_Array(int* Array, int Number) { register int i; for (i = 0; i < Number; i++) { Array[i] = FALSE; } } // 检测数字是否使用过,未用返回真,否则返回假 int Check(int Var, int* Array) { int Success = TRUE; int i; while (Var > 0) { i = Var % 10; if (Array[i-1] == FALSE) { Array[i-1] = TRUE; } else { Success = FALSE; break; } Var /= 10; } return Success; }