用c语言写一个回文判断的算法
时间: 2024-05-22 07:15:25 浏览: 166
#include <stdio.h>
#include <string.h>
int isPalindrome(char str[]) {
int len = strlen(str);
for (int i = 0; i < len / 2; i++) {
if (str[i] != str[len - i - 1]) {
return 0; // 不是回文
}
}
return 1; // 是回文
}
int main() {
char str[100];
printf("请输入一个字符串:");
scanf("%s", str);
if (isPalindrome(str)) {
printf("%s是回文\n", str);
} else {
printf("%s不是回文\n", str);
}
return 0;
}
相关问题
用c语言写一段回文算法的代码
在C语言中,你可以编写一个简单的函数来判断一个字符串是否为回文。回文是指正读反读都一样的字符串,例如"level"、"madam"等。下面是一个基本的函数实现:
```c
#include <stdio.h>
#include <string.h>
// 判断字符串是否为回文的函数
int isPalindrome(char str[]) {
int start = 0;
int end = strlen(str) - 1;
// 遍历字符串,直到start小于end
while (start < end) {
if (str[start] != str[end]) { // 如果字符不相等,则不是回文
return 0; // 返回false
}
start++; // 移动开始指针
end--; // 移动结束指针
}
return 1; // 如果遍历完都相等,说明是回文,返回true
}
int main() {
char str[100];
printf("请输入一个字符串:");
fgets(str, sizeof(str), stdin); // 注意这里要处理换行符
str[strcspn(str, "\n")] = '\0'; // 清除fgets获取的换行符
if (isPalindrome(str)) {
printf("%s 是回文\n", str);
} else {
printf("%s 不是回文\n", str);
}
return 0;
}
```
在这个代码中,`isPalindrome` 函数会比较字符串首尾的字符,如果发现有不相等的情况就返回 `0`,表示不是回文;反之,如果所有字符都一一对应相等则返回 `1`。
运用栈,队列,线性表编写一c语言算法实现回文判断
在C语言中,我们可以使用栈(Stack)和队列(Queue)的数据结构来辅助判断一个字符串是否是回文。这里提供一种基本的方法,首先将字符串的一半字符依次入栈,然后逐个取出栈顶元素并与剩余未比较的部分字符对比。如果都相等,则该串是回文。
```c
#include <stdio.h>
#include <string.h>
#include <stdbool.h>
// 判断是否为回文
bool isPalindrome(char str[]) {
int len = strlen(str);
// 创建两个指针,一个指向开始,一个指向结束
int start = 0;
int end = len - 1;
// 使用栈辅助判断
stack<char> s;
while (start < end) {
// 入栈
s.push(str[end]);
// 出栈并与当前字符对比
if (s.top() != str[start]) {
return false; // 如果不相等则不是回文
}
start++;
end--;
}
// 验证栈是否为空,如果为空说明字符串是回文
while (!s.empty()) {
if (s.top() != str[start++]) {
return false;
}
s.pop();
}
return true;
}
int main() {
char test[] = "madam";
if (isPalindrome(test)) {
printf("'%s' is a palindrome.\n", test);
} else {
printf("'%s' is not a palindrome.\n", test);
}
return 0;
}
阅读全文
相关推荐













