网站首页 网站地图
网站首页 > 娱乐人生 > c语言编程回文字符串怎么写

c语言编程回文字符串怎么写

时间:2026-03-20 21:43:05

在C语言中,判断一个字符串是否是回文串可以通过多种方法实现。以下是几种常见的方法:

方法一:首尾字符比较法

通过比较字符串的首尾字符来判断是否为回文。具体步骤如下:

1. 定义两个指针,一个指向字符串的首字符,一个指向字符串的尾字符。

2. 通过循环,依次比较首尾字符是否相等,如果相等则继续比较下一对字符,如果不相等则不是回文字符串。

3. 当指针交叉或者重合时,表示已经比较完全部字符,且所有字符都相等,则是回文字符串。

```c

include

include

include

bool isPalindrome(char *str) {

int left = 0; // 左指针

int right = strlen(str) - 1; // 右指针

while (left < right) {

if (str[left] != str[right]) {

return false; // 不相等,不是回文字符串

}

left++;

right--;

}

return true; // 通过循环,指针交叉或重合,是回文字符串

}

int main() {

char str;

printf("请输入一个字符串: ");

scanf("%s", str);

if (isPalindrome(str)) {

printf("是回文字符串\n");

} else {

printf("不是回文字符串\n");

}

return 0;

}

```

方法二:中心扩展法

从字符串的两端开始,逐步向中间扩展,判断对应位置的字符是否相等。如果所有对应位置的字符都相等,则是回文字符串。

```c

include

include

bool isPalindrome(char *str) {

int left = 0;

int right = strlen(str) - 1;

while (left < right) {

if (str[left] != str[right]) {

return false;

}

left++;

right--;

}

return true;

}

int main() {

char str;

printf("请输入一个字符串: ");

scanf("%s", str);

if (isPalindrome(str)) {

printf("是回文字符串\n");

} else {

printf("不是回文字符串\n");

}

return 0;

}

```

方法三:反转字符串法

将字符串反转,然后与原字符串进行比较。如果反转后的字符串与原字符串相同,则是回文字符串。

```c

include

include

bool isPalindrome(char *str) {

int len = strlen(str);

char *reversed = (char *)malloc(sizeof(char) * (len + 1));

for (int i = 0; i < len; i++) {

reversed[i] = str[len - i - 1];

}

reversed[len] = '\0';

if (strcmp(str, reversed) == 0) {

free(reversed);

return true;

}

free(reversed);

return false;

}

int main() {

char str;

printf("请输入一个字符串: ");

scanf("%s", str);

if (isPalindrome(str)) {

printf("是回文字符串\n");

} else {

printf("不是回文字符串\n");

}

return 0;

}

```

方法四:忽略非字母数字字符

如果需要忽略非字母数字字符,可以先移除所有非字母数字字符,然后再判断是否为回文。