#include <stdio.h>
#include <string.h>
#include <stdbool.h>

// 判断字符串是否为回文串
boolean isPalindrome(char string[]) {
    int length = strlen(string);
    for (int i = 0; i < length / 2; i++) {
        if (string[i] != string[length - i - 1]) {
            return false;
        }
    }
    return true;
}

int main() {
    char string[100];
    printf('请输入一个字符串: ');
    fgets(string, sizeof(string), stdin);
    
    // 去除字符串末尾的换行符
    string[strcspn(string, '\n')] = '\0';
    
    if (isPalindrome(string)) {
        printf('该字符串是回文串\n');
    } else {
        printf('该字符串不是回文串\n');
    }
    
    return 0;
}

代码解释:

  1. isPalindrome 函数:

    • 接收一个字符串作为参数。
    • 使用 strlen 函数获取字符串的长度。
    • 使用循环遍历字符串的前半部分,比较对应位置的字符是否相等。
    • 如果发现有不相等的字符,则返回 false,表示该字符串不是回文串。
    • 如果循环结束后都没有发现不相等的字符,则返回 true,表示该字符串是回文串。
  2. main 函数:

    • 定义一个字符数组 string 用于存储输入的字符串。
    • 使用 printf 函数提示用户输入一个字符串。
    • 使用 fgets 函数获取用户输入的字符串,并将其存储到 string 数组中。
    • 使用 strcspn 函数查找字符串末尾的换行符 \n,并将其替换为字符串结束符 \0,以去除换行符的影响。
    • 调用 isPalindrome 函数判断输入的字符串是否为回文串。
    • 根据 isPalindrome 函数的返回值,使用 printf 函数输出相应的结果。

回文串定义:

回文串是指正序(从左往右)和倒序(从右往左)读都是一样的字符串,例如 'level'、'madam'、'racecar' 等。

C语言实现回文串判断:附代码示例与详解

原文地址: https://www.cveoy.top/t/topic/obx 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录