“回文串”是一个正读和反读都一样的字符串,比如 “level” 或者“noon” 等等就是回文串。请写一个程序判断读入的字符串是否是“回文”。
时间: 2024-12-02 20:20:48 浏览: 21
要编写一个程序来判断一个给定的字符串是否是回文串,你可以使用两个指针,一个从字符串的开始位置(包括),另一个从结束位置(不包括)开始,然后逐个比较对应的字符,如果发现不相等的字符,则该字符串不是回文。当两个指针相遇或交叉时,如果没有找到不相等的字符,那么该字符串就是回文。
以下是一个简单的C语言程序示例:
```c
#include <stdio.h>
#include <stdbool.h>
#include <string.h>
bool isPalindrome(char str[]) {
int start = 0;
int end = strlen(str) - 1;
// 遍历字符串直到start和end相遇
while (start < end) {
// 如果当前字符不等于对应反转后的字符,返回false
if (str[start] != str[end]) {
return false;
}
start++;
end--;
}
// 所有字符都检查过了,没有不相等的,所以是回文
return true;
}
int main() {
char input[100];
printf("Enter a string: ");
fgets(input, sizeof(input), stdin);
// 移除fgets末尾可能包含的换行符
size_t len = strlen(input);
if (input[len - 1] == '\n') {
input[len - 1] = '\0';
}
if (isPalindrome(input)) {
printf("%s is a palindrome.\n", input);
} else {
printf("%s is not a palindrome.\n", input);
}
return 0;
}
```
阅读全文