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

时间:2025-03-05 12:21:51 明星趣事

在C语言中,判断一个字符串是否是回文字符串的方法有很多种。下面我将介绍几种常见的方法,并提供相应的代码示例。

方法一:使用双指针法

这是最简单和直接的方法,通过比较字符串的首尾字符来判断是否为回文。具体步骤如下:

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

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

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

```c

include

include

include

int 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("请输入一个字符串: ");

fgets(str, sizeof(str), stdin); // 读取字符串

str[strcspn(str, "\n")] = 0; // 去除换行符

if (isPalindrome(str)) {

printf("字符串 \"%s\" 是一个回文字符串。\n", str);

} else {

printf("字符串 \"%s\" 不是回文字符串。\n", str);

}

return 0;

}

```

方法二:构造新的回文字符串

另一种方法是构造一个新的回文字符串,即将原字符串的逆序字符串连接到原字符串的后面。如果构造后的字符串与原字符串相同,则原字符串是回文。

```c

include

include

void reverseString(char *str) {

int len = strlen(str);

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

char temp = str[i];

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

str[len - 1 - i] = temp;

}

}

int main() {

char str;

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

fgets(str, sizeof(str), stdin); // 读取字符串

str[strcspn(str, "\n")] = 0; // 去除换行符

reverseString(str);

if (strcmp(str, "

") == 0) {

printf("字符串是回文字符串

");

} else {

printf("字符串不是回文字符串

");

}

return 0;

}

```

方法三:使用辅助数组

还可以使用辅助数组来存储字符串的逆序,然后与原字符串进行比较。

```c

include

include

int isPalindrome(char *str) {

int len = strlen(str);

char reversed[len + 1];

strcpy(reversed, str);

strrev(reversed);

return strcmp(str, reversed) == 0;

}

int main() {

char str;

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

fgets(str, sizeof(str), stdin); // 读取字符串

str[strcspn(str, "\n")] = 0; // 去除换行符

if (isPalindrome(str)) {

printf("字符串 \"%s\" 是一个回文字符串。\n", str);

} else {

printf("字符串 \"%s\" 不是回文字符串。\n", str);

}

return 0;

}

```

以上是几种常见的判断回文字符串的方法。你可以根据自己的需求和喜好选择合适的方法。