C语言,编写一个程序,判断一个字符串是否为回文(顺读和倒读都一样的字符串称为回文)。 【输入形式】以#结尾的任意字符串 【输出形式】如果是回文,输出字符串的长度(不包括结尾的#),否则打印no 【样例输入】abcdcba# 【样例输出】7
时间: 2024-09-08 20:03:25 浏览: 65
下面是一个C语言程序的示例,该程序能够判断输入的字符串是否为回文,并按照您要求的格式输出结果。
```c
#include <stdio.h>
#include <string.h>
#include <stdbool.h>
// 函数声明
bool isPalindrome(const char *str);
int main() {
char input[1000]; // 假设输入的字符串不超过999个字符
printf("请输入一个以#结尾的字符串:");
scanf("%s", input); // 读取字符串直到遇到#为止
if (isPalindrome(input)) {
// 如果是回文,则输出字符串长度(不包括#)
printf("%d", strlen(input) - 1);
} else {
// 如果不是回文,则打印no
printf("no");
}
return 0;
}
// 函数定义:判断字符串是否为回文
bool isPalindrome(const char *str) {
int left = 0; // 左指针
int right = strlen(str) - 1; // 右指针,因为#不算长度所以减1
while (left < right) {
// 如果左右字符不相等,则不是回文
if (str[left] != str[right]) {
return false;
}
left++; // 左指针向右移动
right--; // 右指针向左移动
}
// 如果所有字符都相等,则是回文
return true;
}
```
阅读全文