用C语言编写一个程序完成下列题目,题目描述 给定一个正整数n,则1,2,...,n这n个数字能组成多少个互不相同且无重复数字的三位数。 输入要求 输入一个正整数n ( 3 <= n <= 9 )。 输出要求 先输出三位数的个数, 然后按升序输出所有的三位数, 数据之间用一个空格隔开。 输入样例 3 输出样例 6 123 132 213 231 312 321 提示 最后一个数据的后面没有空格,直接换行。 多组测试数据,可用while(scanf()!=EOF)
时间: 2024-01-16 19:05:37 浏览: 92
有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
以下是用 C 语言编写的程序,可以实现题目要求:
```c
#include <stdio.h>
int main() {
int n;
while (scanf("%d", &n) != EOF) {
int count = 0;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
for (int k = 1; k <= n; k++) {
if (i != j && i != k && j != k) {
int num = i * 100 + j * 10 + k;
printf("%d ", num);
count++;
}
}
}
}
printf("\n%d\n", count);
}
return 0;
}
```
程序中使用了三层循环,分别枚举百位、十位和个位上的数字,通过判断这三个数字是否相同来得到所有不重复的三位数。同时输出三位数的个数,以及所有的三位数按升序排列后的结果。通过 while 循环实现多组测试数据的输入。
阅读全文