2

出力の一部しか表示されない6つ以上の数字/文字を入力したときに、コードがこれを行う理由がよくわかりません。(数字/文字は何にも影響しないことを私は知っています)。

たとえば、catと入力すると、考えられるすべてのバリエーションが一覧表示されます。cat cta act 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;
    }
4

2 に答える 2

1

問題はあなたのコードではなく、すべての順列cmd.exeを表示するのに十分なバッファがウィンドウにないことです。

cygwin で試してみましたが、問題なく動作します。

それを証明するスクリーンショットは次のとおりです。

cmd.exeで

ここに画像の説明を入力

Cygwinで

ここに画像の説明を入力

于 2013-02-27T23:37:12.593 に答える
0

アニケット そうです。

やるべきことは次のとおりです。

左上のメニューの設定を使用して、cmd.exe のストレージを増やすことができます。バッファの高さを 9999 に設定します。

于 2013-02-27T23:42:46.930 に答える