2017-05-08 62 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

它的工作原理!没有更多的语法错误,但它仍然无法区分回文词和非回文词。每次我执行任何单词时,编译器都会将其检测为回文单词。根据问题的要求,用户可以输入任何单词。希望有人能回答这个问题。谢谢! –