C语言实现回文串判断

简介: C语言实现回文串判断

在C语言中,我们可以利用基本的字符串处理功能来实现对一个字符串是否为回文串的判断。回文串是指正向读和反向读都相同的字符串。下面是一段使用C语言编写的代码,用于判断用户输入的字符串是否为回文串。

#include <stdio.h>
#include <string.h>
#include <stdbool.h>  // 引入布尔类型支持

int main() {
    // 回文串判断部分
    char str[20];  // 声明一个大小为20的字符数组存储用户输入的字符串
    fgets(str, sizeof(str), stdin);  // 使用fgets函数安全地读取用户输入(避免gets带来的缓冲区溢出问题)

    int len = strlen(str);  // 获取字符串长度
    if (str[len - 1] == '\n') {  // 检查字符串末尾是否包含换行符
        str[len - 1] = '\0';  // 将换行符替换为字符串结束符
        len--;  // 调整字符串有效长度
    }

    bool flag = true;  // 初始化标志变量,表示当前字符串可能是回文串
    int left = 0, right = len - 1;  // 分别设置左右指针,初始指向字符串两端

    while (left < right) {  // 当左指针小于右指针时继续循环
        printf("%c %c \n", str[left], str[right]);  // 打印当前比较的两个字符以观察比较过程
        if (str[left] != str[right]) {  // 若两个字符不相等
            flag = false;  // 设置标志变量为false,表示该字符串不是回文串
            break;  // 结束循环
        }
        left++;  // 左指针向右移动一位
        right--;  // 右指针向左移动一位
    }

    puts(flag ? "是回文串" : "不是回文串");  // 根据标志变量输出判断结果
    // 程序正常结束,返回0
    return 0;
}

这段程序首先通过fgets函数获取用户的输入,并确保字符串末尾没有换行符影响判断。然后,它创建了两个指针leftright分别指向字符串的开始和结束位置,并通过循环逐步将它们向中间靠拢,同时对比两边的字符是否相等。当发现不相等的字符时,立即跳出循环并设置标志变量为false。最后,根据标志变量的值输出判断结果。整个过程简洁高效,实现了对回文串的准确判断。

相关文章
|
7月前
|
算法 C语言
如何用C语言轻松判断回文数?
如何用C语言轻松判断回文数?
|
7月前
|
C语言
C语言--左旋字符/右旋字符实现及其判断
C语言--左旋字符/右旋字符实现及其判断
35 0
|
C语言
【Leetcode-1.两数之和 -3.无重复字符的最长子串 -9.回文数(C语言)】
【Leetcode-1.两数之和 -3.无重复字符的最长子串 -9.回文数(C语言)】
41 0
|
程序员 C语言
10 C语言 - 判断
10 C语言 - 判断
61 0
|
3月前
|
C语言
C语言判断和运算符联系
在 C 语言中,判断与运算符紧密相关,主要体现在条件表达式的使用上。
206 87
|
6月前
|
C语言
C语言初阶:如何判断是否为素数并且输出
C语言初阶:如何判断是否为素数并且输出
52 0
|
6月前
|
C语言
c语言左旋字符串问题(不同方法超详细解答)
c语言左旋字符串问题(不同方法超详细解答)
32 1
|
6月前
|
C语言
c语言循环题目
c语言循环题目
|
C语言
递归实现字符串逆序输出(c语言)
递归实现字符串逆序输出(c语言)
195 0
|
C语言
C语言力扣简单题-无重复字符的最长子串
C语言力扣简单题-无重复字符的最长子串
136 0