C语言有4个一位数字(1~9),能组成多少个互不相同且无重复数字的三位数?都是多少? 输入格式: 输入4个各不相同的一位数字(1~9),空格分隔。 输出格式: 按照从小到大的顺序输出满足条件的三位数。 若输入的4个一位数字有相同的,或超出1~9范围的,则输出“Data Error”。 输入样例1: 8 2 6 4 输出样例1: 246 248 264 268 284 286 426 428 462 468 482 486 624 628 642 648 682 684 824 826 842 846 862 864 输入样例2: 3 7 5 7 输出样例2: Data Error
时间: 2024-01-07 21:03:31 浏览: 161
有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
以下是C语言实现的代码:
```c
#include <stdio.h>
int main() {
int a, b, c, d;
scanf("%d %d %d %d", &a, &b, &c, &d);
if (a == b || a == c || a == d || b == c || b == d || c == d || a < 1 || a > 9 || b < 1 || b > 9 || c < 1 || c > 9 || d < 1 || d > 9) {
printf("Data Error\n");
return 0;
}
for (int i = 1; i <= 9; ++i) {
if (i == a || i == b || i == c || i == d) continue;
for (int j = 1; j <= 9; ++j) {
if (j == i || j == a || j == b || j == c || j == d) continue;
for (int k = 1; k <= 9; ++k) {
if (k == i || k == j || k == a || k == b || k == c || k == d) continue;
printf("%d%d%d ", i, j, k);
}
}
}
return 0;
}
```
首先读入四个数字,判断是否有重复或不在1~9范围内,如果有则输出“Data Error”并结束程序。否则,使用三个for循环枚举所有满足条件的三位数,并输出。
阅读全文