使用指针编程,判断输入的一串字符是否为“回文”
时间: 2024-05-01 19:16:22 浏览: 6
回文是指正读和反读都相同的字符串,可以用指针来判断。具体实现如下:
```c
#include <stdio.h>
#include <string.h>
int is_palindrome(char *str) {
int len = strlen(str);
char *start = str;
char *end = str + len - 1;
while (start < end) {
if (*start != *end) {
return 0; // 不是回文
}
start++;
end--;
}
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;
}
```
首先计算字符串的长度,然后定义两个指针分别指向字符串的首尾字符。每次比较首尾字符是否相等,如果不相等就说明不是回文,返回 0。如果一直比较到中间字符都相等,说明是回文,返回 1。最后在 main 函数中调用 is_palindrome 函数进行判断。
相关问题
用c语言编程判断输入的一串字符是否为回文。
可以使用双指针法判断一个字符串是否为回文。具体实现步骤如下:
1. 定义两个指针,一个指向字符串的首字符,一个指向字符串的尾字符。
2. 每次比较两个指针指向的字符是否相等,如果相等则继续向中间移动指针;如果不相等则说明不是回文,直接返回 false。
3. 当左指针大于等于右指针时,说明已经比较完了整个字符串,字符串是回文,返回 true。
具体代码如下:
```c
#include <stdio.h>
#include <string.h>
int isPalindrome(char *s) {
int len = strlen(s);
char *left = s;
char *right = s + len - 1;
while (left < right) {
if (*left != *right) {
return 0;
}
left++;
right--;
}
return 1;
}
int main() {
char s[100];
printf("请输入一串字符:");
scanf("%s", s);
if (isPalindrome(s)) {
printf("%s是回文\n", s);
} else {
printf("%s不是回文\n", s);
}
return 0;
}
```
注意:这里只考虑了纯字符的情况,如果字符串中包含其他字符,需要根据实际情况进行处理。
编程判断一串字符是否为回文
可以使用双指针的方法来判断一个字符串是否为回文。具体步骤如下:
1. 定义两个指针 i 和 j,分别指向字符串的开头和结尾。
2. 循环比较字符,如果相同则将指针 i 向右移动一位,将指针 j 向左移动一位,继续比较下一个字符。
3. 如果发现不同的字符,则说明该字符串不是回文,直接返回 false。
4. 如果指针 i 和 j 相遇,说明该字符串是回文,返回 true。
下面是一个示例代码实现:
```python
def is_palindrome(s):
i, j = 0, len(s) - 1
while i < j:
if s[i] != s[j]:
return False
i += 1
j -= 1
return True
```
可以通过调用该函数传入一个字符串参数来判断该字符串是否为回文,例如:
```python
s = 'level'
print(is_palindrome(s)) # 输出 True
```