c语言输入一个字符串,利用指针判断其是否为回文
时间: 2023-08-22 18:03:25 浏览: 302
下面是一个利用指针判断字符串是否为回文的示例代码:
```c
#include <stdio.h>
#include <string.h>
int isPalindrome(char *str) {
char *left = str; // 左指针指向字符串首字符
char *right = str + strlen(str) - 1; // 右指针指向字符串尾字符
while (left < right) {
if (*left != *right) {
return 0; // 不是回文
}
left++; // 左指针右移
right--; // 右指针左移
}
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"等。以下是简单的步骤:
1. **获取用户输入**:使用`scanf()`函数从用户那里接收字符串。
2. **初始化两个指针**:设置两个指针,一个指向字符串的开始(通常称为`start`),另一个指向字符串的结束(通常称为`end`)。
3. **比较字符**:while循环中,每次移动`start`向前一位,`end`向后一位,检查它们指向的字符是否相等。如果所有对应位置的字符都相同,说明是回文;反之则不是。
4. **处理边界条件**:当`start`大于等于`end`时,表示已经比较完所有的字符,确认整个字符串是回文。
下面是一个简单的C语言函数示例:
```c
#include <stdio.h>
#include <stdbool.h>
bool isPalindrome(char str[]) {
int start = 0;
int end = strlen(str) - 1;
while (start < end) {
if (str[start] != str[end]) {
return false;
}
start++;
end--;
}
return true;
}
int main() {
char input[100];
printf("Enter a string: ");
fgets(input, sizeof(input), stdin); // 使用fgets避免换行符干扰
input[strcspn(input, "\n")] = '\0'; // 清除fgets留下的换行符
bool result = isPalindrome(input);
if (result) {
printf("%s is a palindrome.\n", input);
} else {
printf("%s is not a palindrome.\n", input);
}
return 0;
}
```
C语言输入一个字符串,判断是否为回文
在C语言中,判断一个字符串是否为回文(即正读反读都一样的词或句子)可以采用双指针法。通常做法是设置两个指针,一个指向字符串的起始位置(i),另一个指向结束位置(j)。然后依次比较两个指针所指向的字符,如果相等则向中间移动,如果不等,则说明不是回文。
下面是一个简单的C语言函数示例:
```c
#include <stdio.h>
#include <string.h>
// 判断字符串是否为回文
int isPalindrome(char str[]) {
int i = 0;
int j = strlen(str) - 1; // 字符串长度减一,因为最后一个字符不用考虑
while (i < j) { // 当两个指针未相遇
if (str[i] != str[j]) { // 如果对应字符不相等
return 0; // 不是回文,返回0
}
i++; // 左指针右移一位
j--; // 右指针左移一位
}
return 1; // 全部字符都匹配,是回文,返回1
}
int main() {
char str[100];
printf("请输入一个字符串:");
fgets(str, sizeof(str), stdin); // 从标准输入获取字符串
str[strcspn(str, "\n")] = '\0'; // 去除换行符
if (isPalindrome(str)) {
printf("%s 是回文\n", str);
} else {
printf("%s 不是回文\n", str);
}
return 0;
}
阅读全文