一、有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
解答:
先用数组将1、2、3、4存储起来,然后使用三重循环枚举所有可能的三位数。
具体地,第一重循环枚举数字的百位,从1到4;第二重循环枚举数字的十位,从1到4,但要去除百位上已经选择的数字;第三重循环枚举数字的个位,同样从1到4,但要去除百位和十位上已经选择的数字。
每当枚举到一个合法的三位数时,就将它打印出来。
代码如下:
#include <stdio.h>
int main() {
int a[] = {1, 2, 3, 4};
int i, j, k;
int cnt = 0; // 计数器
for (i = 0; i < 4; i++) {
for (j = 0; j < 4; j++) {
if (j == i) continue; // 若十位上和百位上的数字相同,则跳过
for (k = 0; k < 4; k++) {
if (k == i || k == j) continue; // 若个位上和百位或十位上的数字相同,则跳过
printf("%d%d%d ", a[i], a[j], a[k]);
cnt++;
}
}
}
printf("\n总共有%d个三位数\n", cnt);
return 0;
}