应该比较好懂吧....用了大量define
#include<stdio.h>
#define G1(A) A/1%10 /* 取个位数 */
#define G2(A) A/10%10 /* 取百位数 */
#define G3(A) A/100%10 /* 取千位数 */
#define DouBuDeng(A) ((G1(A)!=G2(A))&&(G1(A)!=G3(A))&&(G2(A)!=G3(A)))
/* 判断数字自身是否有重复 */
#define BuHanChongFu(A,B) ((G1(A)!=G1(B))&&(G1(A)!=G2(B))&&(G1(A)!=G3(B))&&(G2(A)!=G1(B))&&(G2(A)!=G2(B))&&(G2(A)!=G3(B))&&(G3(A)!=G1(B))&&(G3(A)!=G2(B))&&(G3(A)!=G3(B)))
/* 判断一个数字是否和另一个数字有重复 */
int main(){
for(int b=100;b<1000;b++){
if((DouBuDeng(b)&&DouBuDeng(b*2)&&DouBuDeng(b*3))&&BuHanChongFu(b,b*2)&&BuHanChongFu(b,b*3)&&BuHanChongFu(b*2,b*3))
(BuHanChongFu(b,0)&&BuHanChongFu(b*2,0)&&BuHanChongFu(b*3,0))?printf("%d %d %d\n",b,b*2,b*3):1;
}
/* 过滤掉结果含0的数字 */
}