C语言判断输入的一串字符是否为回文
时间: 2023-12-06 15:03:43 浏览: 87
回文是指正读和反读都相同的字符串,可以使用C语言编写一个函数来判断输入的一串字符是否为回文。以下是一种实现方式:
```c
#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;
}
```
该程序中,isPalindrome函数接受一个字符串参数,使用循环和下标索引来比较字符串的前半部分和后半部分是否相等,如果不相等则返回0表示不是回文,否则返回1表示是回文。在main函数中,调用isPalindrome函数判断输入的字符串是否为回文,并输出相应结果。
相关问题
c语言编程判断一串字符是否为回文
回文是指正着读和倒着读一样的字符串,判断一个字符串是否为回文可以按照以下步骤操作:
1. 定义两个指针,分别指向字符串的头部和尾部。
2. 依次比较头部和尾部指针指向的字符是否相等,如果相等,则继续向中间移动指针;如果不相等,则说明不是回文,直接返回 false。
3. 如果指针相遇,则说明是回文,返回 true。
下面是一个简单的 C 语言代码实现:
```c
#include <stdio.h>
#include <string.h>
int is_palindrome(char *str)
{
int len = strlen(str);
char *p1 = str;
char *p2 = str + len - 1;
while (p1 < p2) {
if (*p1 != *p2) {
return 0;
}
p1++;
p2--;
}
return 1;
}
int main()
{
char str[100];
printf("请输入一个字符串:");
scanf("%s", str);
if (is_palindrome(str)) {
printf("%s 是回文字符串\n", str);
} else {
printf("%s 不是回文字符串\n", str);
}
return 0;
}
```
需要注意的是,该算法的时间复杂度为 O(n),其中 n 为字符串的长度。
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`。
阅读全文