2012-10-09 21 views
0

我寫了一個程序,它打印給定字符串的所有排列。但它印出了一些奇怪的東西。代碼去如下:排列函數使用c代碼

#include <stdio.h> 

void swap (char *x, char *y) 
{ 
    char temp; 
    temp = *x; 
    *x = *y; 
    *y = temp; 
} 

void permute(char *a, int i, int n) 
{ 
    int j; 
    if (i == n) 
    printf("%d\n", a); 
    else 
    { 
    for (j = i; j <= n; j++) 
    { 
     swap((a+i), (a+j)); 
     permute(a, i+1, n); 
     swap((a+i), (a+j)); 
    } 
    } 
} 

int main(void) 
{ 
    char a[100]; 
    gets(a); 

    int k; 
    k=strlen(a); 
    permute(a, 0, k-1); 

    system("pause"); 
} 

它打印一些數字,而不是定字符串的.. plz幫助

+2

*請*修正縮進,這是比它應該更少的可讀性。 – unwind

+0

這不是你的直接問題,但永遠不要使用'gets'。如果有人輸入超過100個字符,將會發生可怕的事情。 – zwol

回答

8

還有就是你的問題:

printf("%d\n", a); 

應該

printf("%s\n", a); 
+0

非常感謝...那是我的壞..這是一個愚蠢的錯誤....對不起.. –

+0

不需要對不起:) – thumbmunkeys