编写一个程序,用于检查一个最多包含50个字符的字符串是否为回文(正读和反读都相同)
时间: 2024-12-21 08:21:18 浏览: 14
要编写一个C语言程序来检查一个最多包含50个字符的字符串是否是回文,你可以采用以下步骤:
1. 定义一个函数 `isPalindrome`,它接收一个字符串参数。
2. 首先,检查字符串长度是否超过50个字符。如果超过,返回 false 或者提示错误信息。
3. 初始化两个指针,一个指向字符串的开始 (`start`),另一个指向字符串的末尾 (`end`)。
4. 当 `start < end` 时,逐个比较 `start` 指向的字符和 `end` 指向的字符,如果它们不相等,则不是回文,返回 false。
5. 如果所有字符都匹配,移动 `start` 向右一位,同时 `end` 向左一位,直到两者相遇或交叉。
6. 如果循环结束没有返回,说明字符串是回文,返回 true。
以下是完整的C代码实现:
```c
#include <stdbool.h>
#include <stdio.h>
#include <string.h>
// 函数定义
bool isPalindrome(char str[], int len) {
if (len > 50) {
printf("Error: String length exceeds 50 characters.\n");
return false;
}
int start = 0;
int end = len - 1;
while (start < end) {
if (str[start] != str[end]) {
return false;
}
start++;
end--;
}
return true;
}
int main() {
char input[51];
printf("Enter a string (at most 50 characters): ");
fgets(input, sizeof(input), stdin); // 注意这里要移除末尾换行符
input[strcspn(input, "\n")] = '\0'; // 移除末尾换行符
int inputLen = strlen(input);
bool isPal = isPalindrome(input, inputLen);
if (isPal) {
printf("The string is a palindrome.\n");
} else {
printf("The string is not a palindrome.\n");
}
return 0;
}
```
阅读全文