当我输入6个或更多数字/字符时,我不确定为什么我的代码会这样做,它只显示一些输出。 (我知道数字/字符不会影响任何事情。)
例如,如果我输入cat,它会列出所有可能的变化: 猫 CTA 法案 ATC TAC TCA
但是当我输入123456(或任何6+字母字符串)时: 它开始显示在462513-612345(如果你知道我的意思)。其余的事情发生了什么(123456-462513)?
#include <stdio.h>
#include <string.h>
void swap (char *X, char *Y)
{
char Z;
Z = *X;
*X = *Y;
*Y = Z;
}
void mixmatch (char *A, int i, int n)
{
int j;
if (i == n)
printf("%s\n", A);
else
{
for (j = i; j <= n; j++)
{
swap((A+i), (A+j));
mixmatch(A, i+1, n);
swap((A+i), (A+j));
}
}
}
int main()
{
char A[100];
printf ("Enter the string/set of numbers: ");
gets(A);
int k;
k=strlen(A);
mixmatch(A, 0, k-1);
return 0;
}
答案 0 :(得分:1)
问题不在于您的代码,问题是Windows cmd.exe
没有足够的缓冲区来显示所有排列。
我尝试使用cygwin,它完美无缺。
以下是证明它的屏幕截图:
答案 1 :(得分:0)
Aniket是对的。
以下是该做什么:
您可以使用左上角菜单的设置增加cmd.exe的存储空间。将缓冲区高度设置为9999。