c语言怎么用1-9组成各不相同的九位数
时间: 2023-05-26 15:05:15 浏览: 102
可以使用全排列的方式,即将1-9这九个数字进行全排列,然后依次组成九位数,只选取不重复的组合。代码如下:
```c
#include <stdio.h>
int main()
{
int num[9] = {1, 2, 3, 4, 5, 6, 7, 8, 9}; // 数字数组
int i, j, k, l, m, n, o, p, q; // 九个变量分别表示九位数中的每一位
int count = 0; // 记录不重复的九位数的个数
for(i=0; i<9; i++)
{
for(j=0; j<9; j++)
{
if(i==j) continue;
for(k=0; k<9; k++)
{
if(i==k || j==k) continue;
for(l=0; l<9; l++)
{
if(i==l || j==l || k==l) continue;
for(m=0; m<9; m++)
{
if(i==m || j==m || k==m || l==m) continue;
for(n=0; n<9; n++)
{
if(i==n || j==n || k==n || l==n || m==n) continue;
for(o=0; o<9; o++)
{
if(i==o || j==o || k==o || l==o || m==o || n==o) continue;
for(p=0; p<9; p++)
{
if(i==p || j==p || k==p || l==p || m==p || n==p || o==p) continue;
for(q=0; q<9; q++)
{
if(i==q || j==q || k==q || l==q || m==q || n==q || o==q || p==q) continue;
int res = num[i]*100000000 + num[j]*10000000 + num[k]*1000000 + num[l]*100000 + num[m]*10000 + num[n]*1000 + num[o]*100 + num[p]*10 + num[q];
printf("%d\n", res); // 输出每个组合成的九位数
count++; // 计数器加1
}
}
}
}
}
}
}
}
}
printf("共有%d个不重复的九位数", count); // 输出不重复的九位数个数
return 0;
}
```