C解决·给定不超过6的正整数A,考虑从A开始的连续4个数字。请输出由它们组成的无重复数字的3位数(要求每6个数字为一行,输出最后一个数字后不输出空格)
输入:2
输出:
234 235 243 245 253 254
324 325 342 345 352 354
423 425 432 435 452 453
523 524 532 534 542 543
思路:
1、 可以计算出3个位置能排列出多少个数字,
4*3*2=24个,所以,当输出24个数字后,
就不再输出空格
2、 3位数可以用三重for循环实现,
当3个位置上的数字不相同时,组成
一个数字,count++,当count%6==0时,输出空格
代码:
#include<stdio.h>
int main()
{
// 给定不超过6的正整数A,考虑从A开始的连续4个数字。请输出由它们组成的无重复数字的3位数
int num;
int digit[4];
scanf_s("%d", &num);
int total;
total = 24; // 4 * 3 * 2 * 1;
int i, j, k;
int sum = 0;
i = num;
while (i <= num + 3) {
j = num;
while (j <= num + 3) {
k = num;
while (k <= num + 3) {
if (i != j && i != k && j != k) {
sum++;
printf("%d%d%d", i, j, k);
if (sum != total ) {
printf(" ");
}
if (sum % 6 == 0) {
printf("\n");
}
}
k++;
}
j++;
}
i++;
}
return 0;
}
运行结果截图: