判断字符串是否为回文c语言
时间: 2023-12-06 12:36:18 浏览: 134
以下是判断字符串是否为回文的C语言代码:
```c
#include <stdio.h>
#include <string.h>
int main()
{
char str[100];
int i, len, flag = 0;
printf("Please input string:");
gets(str);
len = strlen(str);
for(i=0;i<len/2;i++)
{
if(str[i]!=str[len-i-1])
{
flag = 1;
break;
}
}
if(flag)
printf("NO\n"); else
printf("YES\n");
return 0;
}
```
相关问题
用栈判断给定的字符串是否是回文 c语言版
可以使用栈来判断一个给定的字符串是否是回文。具体方法如下:
1. 首先创建一个栈,将字符串中的每个字符依次压入栈中。
2. 然后从字符串的第一个字符开始遍历,每次取出栈顶的字符进行比较。如果相同,则继续比较下一个字符;如果不同,则说明该字符串不是回文。
3. 当栈为空时,说明该字符串是回文。
下面是用C语言实现的示例代码:
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_SIZE 100
typedef struct {
char data[MAX_SIZE];
int top;
} Stack;
void InitStack(Stack* s) {
s->top = -1;
}
void Push(Stack* s, char c) {
if (s->top >= MAX_SIZE - 1) {
printf("Stack overflow!\n");
return;
}
s->top++;
s->data[s->top] = c;
}
char Pop(Stack* s) {
if (s->top == -1) {
printf("Stack underflow!\n");
return '\0';
}
char c = s->data[s->top];
s->top--;
return c;
}
int IsPalindrome(char* str) {
Stack s;
InitStack(&s);
int len = strlen(str);
for (int i = 0; i < len; i++) {
Push(&s, str[i]);
}
for (int i = 0; i < len; i++) {
if (Pop(&s) != str[i]) {
return 0;
}
}
return 1;
}
int main() {
char str[MAX_SIZE];
printf("Please enter a string: ");
scanf("%s", str);
if (IsPalindrome(str)) {
printf("%s is a palindrome.\n", str);
} else {
printf("%s is not a palindrome.\n", str);
}
return 0;
}
```
回文是从前向后和从后向前读起来都一样的,请编写一个函数,判断一个字符串是否为回文C语言完整代码
当然可以!以下是 C 语言代码实现:
```c
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int is_palindrome(char *s) {
int len = strlen(s);
char str[len + 1];
int i, j, k = 0;
// 去除空格并转换为小写字母
for (i = 0; i < len; i++) {
if (isalpha(s[i])) {
str[k++] = tolower(s[i]);
}
}
str[k] = '\0';
// 判断是否为回文
for (i = 0, j = k - 1; i < j; i++, j--) {
if (str[i] != str[j]) {
return 0;
}
}
return 1;
}
int main() {
char string1[] = "A man a plan a canal Panama";
char string2[] = "Hello, world!";
printf("%d\n", is_palindrome(string1)); // 1
printf("%d\n", is_palindrome(string2)); // 0
return 0;
}
```
这个函数首先会将字符串去除空格并转换为小写字母,然后利用双指针法来判断字符串是否为回文。如果字符串与将其反转后的结果相同,则说明它是回文,返回 1,否则返回 0。
你可以调用这个函数来判断一个字符串是否为回文,例如:
```c
char string1[] = "A man a plan a canal Panama";
char string2[] = "Hello, world!";
printf("%d\n", is_palindrome(string1)); // 1
printf("%d\n", is_palindrome(string2)); // 0
```
希望这个函数能够满足你的需求!
阅读全文