用C++编辑,要求用户输入一些字符串,程序能判断是否是回文,若是,则输出"ture",不是则false。

要求用户输入一个字符串,这个字符串可以包含空格,大小写字母和数字,还有标点符号, 然后要判断输入的字符串是不是一个回文(palindrome)。当程序读取输入的字符串的时候,要跳过所有的标点,空格等等,只保留大小写字母和数字。如果输入的是字符串,就return单词true,不是就false。写一个main function 和另外一个function叫bool isPalindrome(string input)。
在线等百度大神们的解答 %>_<%

#include <stdio.h>
#include <string.h>
#define false 0
#define true 1
 
int Use(char *str) {
    int len = strlen(str);
    int mid = (len % 2 == 0)?(len / 2) : (len / 2 + 1);
    int i;
    
    for (i = 0; i < mid; i++) {
        if (str[i] != str[len - 1 - i]) 
            return false;
    }
    
    return true;
}
int main() {
    printf("%d %d %d %d\n", 
            Use("abcdcba"),
            Use("abcddcba"),
            Use("abcdefg"),
            Use("abcddcab")
          );
    return 0;
}

追问

大神你这个运行出来不是我要的结果

追答

原理才是最主要的,不是么?

追问

那能不能麻烦做下注解,就是这一条代码是干嘛的,这样,谢谢了

追答int Use(char *str) {
    int len = strlen(str); //求目标串长
    int mid = (len % 2 == 0)?(len / 2) : (len / 2 + 1); //判断串长是偶数还是奇数
    int i;
     
    for (i = 0; i < mid; i++) {
        if (str[i] != str[len - 1 - i]) //以中点为界,首尾对应位置判断是否一致。
            return false; //不一致返回false
    }
     
    return true; // 完全一致返回true
}

温馨提示:答案为网友推荐,仅供参考
相似回答