判断任意输入的字符串是否为回文的算法C语言,字符串长度可变
时间: 2024-10-16 14:12:06 浏览: 15
判断一个字符串是否为回文的常见算法可以用C语言编写,其基本思想是检查字符串从头到尾以及从尾到头字符是否相等。这里是一个简单的C语言函数示例:
```c
#include <stdio.h>
#include <stdbool.h>
#include <string.h>
bool isPalindrome(char str[]) {
int len = strlen(str);
for (int i = 0; i < len / 2; i++) { // 只需比较一半字符,因为另一半是对称的
if (str[i] != str[len - 1 - i]) {
return false;
}
}
return true; // 如果所有字符都匹配,则为回文
}
int main() {
char input[100];
printf("请输入一个字符串:");
fgets(input, sizeof(input), stdin); // 注意去掉fgets的换行符
input[strcspn(input, "\n")] = '\0'; // 去掉多余的换行符
if (isPalindrome(input)) {
printf("%s 是回文串。\n", input);
} else {
printf("%s 不是回文串。\n", input);
}
return 0;
}
```
相关问题
输入一个字符串判断该字符串是否为回文用c语言写
以下是用C语言实现判断一个字符串是否为回文字符串的代码:
```c
#include <stdio.h>
#include <string.h>
int main()
{
char str[100];
int i, j, len, flag = 1;
printf("请输入一个字符串:");
gets(str);
len = strlen(str);
for (i = 0, j = len - 1; i < len / 2; i++, j--)
{
if (str[i] != str[j])
{
flag = 0;
break;
}
}
if (flag)
{
printf("yes\n");
}
else
{
printf("no\n");
}
return 0;
}
```
C语言判断输入的字符串是否为回文
在C语言中,判断一个字符串是否为回文通常采用双指针法,即设置两个指针,一个从字符串的起始位置开始(通常是`str`),另一个从字符串的结束位置开始(通常是`str + strlen(str) - 1`)。然后,逐个比较这两个指针对应的字符是否相等。如果所有对应字符都相等,那么字符串就是回文;如果有任何一个不相等,就立即返回false。
以下是一个简单的C语言函数,用于检查输入的字符串是否为回文:
```c
#include <stdio.h>
#include <string.h>
// 定义一个函数isPalindrome检查字符串是否回文
int isPalindrome(const char *str) {
// 初始化左右指针
const char *left = str;
const char *right = str + strlen(str) - 1;
// 循环直到左右指针交叉或相遇
while (left < right) {
if (*left != *right) { // 如果左边的字符不等于右边的字符
return 0; // 直接返回 false,表示不是回文
}
left++; // 左指针右移一位
right--; // 右指针左移一位
}
return 1; // 指针交叉或相遇,说明是回文,返回 true
}
int main() {
char input[100];
printf("请输入一个字符串:");
fgets(input, sizeof(input), stdin); // 防止换行符干扰
input[strcspn(input, "\n")] = '\0'; // 移除fgets读取的换行符
if (isPalindrome(input)) {
printf("%s是回文字符串\n", input);
} else {
printf("%s不是回文字符串\n", input);
}
return 0;
}
```
在这个例子中,我们首先获取用户输入,然后调用`isPalindrome`函数进行判断,并根据结果输出相应的提示信息。如果想在`main()`函数内部简化代码,也可以直接在循环中处理输入,并省去`fgets`。
阅读全文