gpt4 book ai didi

c - C语言列出所有不重复的数字排列

转载 作者:行者123 更新时间:2023-12-01 11:57:02 25 4
gpt4 key购买 nike

<分区>

所以我有这个 C 语言的作业问题,我已经处理了最后 5 个小时,但无法弄清楚哪里出了问题。

问题陈述:

取 n 为从 1 到 9 的数字个数,并打印所有可能组成的不重复数字的数字。对于例如如果 n = 3,则数字为 1、2、3,数字为 123、132、231、213、321、312。

输入:2 输出:12、21

输入:3 输出:123、132、231、213、321、312

这是我到目前为止所做的:

#include<stdio.h>
#include<string.h>
#include<math.h>
#define N 10

void print(int *num, int n)
{
int i;
for ( i = 0 ; i < n ; i++){
printf("%d", num[i]);
}
printf("\n");
}

int main()
{
int num[N];
int temp;
int i, n, j,k;

printf("\nNo of digits? : ");
scanf("%d", &n);

for(k=0; k<n; k++){
num[k] = k + 1;
}

for (j = 1; j <= n; j++) {
for (i = 0; i < n-1; i++) {
temp = num[i];
num[i] = num[i+1];
num[i+1] = temp;
print(num, n);
}
}
return 0;
}

我得到最多 3 位数字的预期结果。但是从 4 开始,它并没有显示所有数字排列。

No of digits? : 4

2134
2314
2341
3241
3421
3412
4312
4132
4123
1423
1243
1234

设置计数器直到 n! 数组将超出索引。

那么如何正确计算所有排列呢?

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com