2017-05-08 65 views
1

惠,如果有人能回答這個問題,我真的很感激。問題是:如何使用strcmp檢測迴文詞

編寫一個程序,它將讀取最多100個字符的字符串,並以相反的順序重寫其字符。例如,GOOD這個詞應該寫成DOOG和夫人。檢查迴文詞。 (迴文是其含義可以被解釋正向或反向相同的方式來字)

輸出示例:

輸入您的字:好 反轉:doog 它不是一個迴文詞

輸入你的話:反夫人 :madam` 這是一個迴文詞

這裏是我的源代碼:

> #include <stdio.h> 
#include <string.h> 
#define SIZE 100  
int main() 
{ 
    char word[SIZE]; 
    int length,x,result; 
    printf ("Input your word : "); 
    gets(word); 
    printf ("Reversed: "); 
    puts (strrev(word)) ; 
    length = strlen (word); 
    for (x=0; x<length; x++) 
    { 
     result= strcmp (strrev(word),word)); 
     if (result==0) 
      printf("It's a palindrome word!"); 
     else 
      printf ("It's not a palindrome word!"); 


    } 

    return 0; 
} 

然而,我的源代碼只以上設法扭轉這個詞,但無法檢測到正確的迴文詞表示。提前謝謝!

回答

1

你並不需要產生相反的詞,只是比較字符:

bool isPalindrom(char word[], int sizeOfWord){ 
    int j=sizeOfWord-1; 
    for (int i=0 ; i<sizeOfWord ; i++){ 
     if(word[i] != word[j]){ 
      return false; 
     } 
     j--; 
    } 

    return true; 
} 

int main() 
{ 
    char word[] = {'m', 'a', 'd', 'a', 'm'}; 
    int sizeOfWord = sizeof(word)/sizeof(word[0]); 
    printf("%d", isPalindrom(word, sizeOfWord)); 
} 
0

我有固定的一些錯誤和工作,我刪除了循環和固定的strcmp功能

enter image description here

enter image description here

enter image description here

+0

謝謝指導! –

+0

當你獲得15個聲望時,我會滿意,如果你投票回答我的答案;) –

+0

它的工作原理!沒有更多的語法錯誤,但它仍然無法區分迴文詞和非迴文詞。每次我執行任何單詞時,編譯器都會將其檢測爲迴文單詞。根據問題的要求,用戶可以輸入任何單詞。希望有人能回答這個問題。謝謝! –