试写一个算法,判别读入的一个以‘@’为结束符的字符序列是否是“回文”用C语言写 我是初学者
时间: 2024-10-09 17:02:19 浏览: 69
当然可以,对于一个初学者来说,理解并编写判断回文的算法是一个很好的练习。这里是一个简单的C语言函数,它会检查输入的字符串是否是回文:
```c
#include <stdio.h>
#include <string.h>
// 函数声明
int isPalindrome(char str []);
int main() {
char input[100];
// 输入字符串,直到遇到 '@'
printf("请输入一个以 '@' 结束的回文字符序列: ");
fgets(input, sizeof(input), stdin);
// 去掉换行符
input[strcspn(input, "@")] = '\0';
if (isPalindrome(input)) {
printf("%s 是一个回文串.\n", input);
} else {
printf("%s 不是一个回文串.\n", input);
}
return 0;
}
// 判断回文函数
int isPalindrome(char str[]) {
int start = 0; // 从头开始
int end = strlen(str) - 1; // 从尾部开始
while (start < end) { // 当头指针小于尾指针
if (str[start] != str[end]) { // 如果对应位置的字符不相等
return 0; // 返回非回文,false
}
start++; // 指针向右移动
end--; // 指针向左移动
}
return 1; // 所有字符都匹配,返回回文,true
}
```
这个程序首先获取用户输入,然后去掉字符串尾部的换行符,接着调用 `isPalindrome` 函数来检查字符串是否是回文。如果所有字符从头到尾都能一一对应匹配,那么就是回文。
阅读全文