编写一道有 1、2、3、 四个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
#include
int main()
{
int i, j, k, count = 0;
for (i = 1; i
for (j = 1; j
if (j == i) continue; // 十位数字不能和百位数字相同
for (k = 1; k
if (k == i || k == j) continue; // 个位数字不能和百位、十位数字相同
printf("%d%d%d\n", i, j, k);
count++;
}
}
}
printf("共%d个三位数\n", count);
return 0;
}
题目要求组成互不相同且无重复数字的三位数,那么我们可以先枚举百位数字,再枚举十位数字,最后枚举个位数字。而在枚举的过程中,需要注意一下几点:
百位数字的取值范围是 1 到 4,因为只有 1、2、3、4 这四个数字可以组成三位数。
十位数字的取值范围是除去百位数字后的剩余数字,即如果百位数字是 1,那么十位数字只能是 2、3、4 中的两个数字。
同理,个位数字的取值范围是除去百位和十位数字后的剩余数字,即如果百位数字是 1,十位数字是 2,那么个位数字只能是 3 或 4。
在枚举的过程中,需要判断百位、十位和个位数字是否互不相同且无重复数字,如果满足条件,就输出这个三位数。
因此,可以使用三重循环来实现这个过程
领取专属 10元无门槛券
私享最新 技术干货