1到9,9个数字,有362880种排列,
上面的程序有问题,首先对指针没有初始化,其次结果不合要求。题意要求输出9位数字的所有组合(这9位数字不能重复),而给出的程序却只能输出有重复的组合。
下面是我给出的修正。
void func(char *num, int n) //输出1~n的所有排列(n 9) {
printf("n must be greater than 0 and no more than 9。 \n");
return;
}
len = strlen(num);
for (i = 1; i <= n; i++) {
itoa(i, &ch, 10);
for (j = 0; j < len; j++) {
if...全部
上面的程序有问题,首先对指针没有初始化,其次结果不合要求。题意要求输出9位数字的所有组合(这9位数字不能重复),而给出的程序却只能输出有重复的组合。
下面是我给出的修正。
void func(char *num, int n) //输出1~n的所有排列(n 9) {
printf("n must be greater than 0 and no more than 9。
\n");
return;
}
len = strlen(num);
for (i = 1; i <= n; i++) {
itoa(i, &ch, 10);
for (j = 0; j < len; j++) {
if (ch == num[j]) break;
}
if (j < len) continue;
strcat(num, &ch);
func(num, n); //递归调用
num[len] = 0;
}
if (n == len)
printf("%s\n", num);
}
void main()
{
char a[10]={0};
func(a,9);
}
。
收起