用C++写一个函数判断是否为回文
时间: 2024-05-07 08:16:44 浏览: 78
字符串。
好的,以下是这个函数的代码:
```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("请输入一个字符串:");
gets(str);
if (isPalindrome(str)) {
printf("%s 是回文字符串。\n", str);
} else {
printf("%s 不是回文字符串。\n", str);
}
return 0;
}
```
这个函数的原理很简单:它首先计算出字符串的长度,然后从两端开始比较字符,如果发现不一致就返回 0,表示不是回文字符串。如果比较完毕,没有发现不一致的字符,就返回 1,表示是回文字符串。在主函数中,我们通过 gets() 函数从用户输入中读取一个字符串,然后调用 isPalindrome() 函数判断它是否是回文字符串。
相关问题
用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("请输入一个字符串:\n");
fgets(str, 100, stdin); // 从标准输入中读取字符串
if (isPalindrome(str)) {
printf("%s 是回文串\n", str);
} else {
printf("%s 不是回文串\n", str);
}
return 0;
}
```
这个程序中,我们首先定义了一个 `isPalindrome` 函数,用于判断字符串是否为回文串。在函数中,我们首先获取字符串的长度,并通过循环逐个比较字符串正序和倒序位置上的字符是否相同,如果发现不同,则说明该字符串不是回文串。如果遍历完整个字符串,正序和倒序字符全部相同,那么说明该字符串是回文串,返回 `1`。
在 `main` 函数中,我们从标准输入读取一个字符串,并将其传递给 `isPalindrome` 函数进行判断。如果返回值为 `1`,说明该字符串是回文串,反之则不是。最后输出正确的结果。
注:此程序忽略了字符串中的空格,如果需要考虑空格,则需要对字符串进行预处理,将空格去除或替换为空白字符。
如何判断一个字符串是否为回文C++、
判断一个字符串是否为回文,C++ 的实现方法与 Python 类似,可以将字符串反转后与原字符串进行比较,如果相同就是回文。具体实现可以使用 `std::reverse` 函数来反转字符串,或者使用循环遍历字符串的方法实现。下面是一个 C++ 的例子:
```cpp
#include <iostream>
#include <algorithm> // 包含 std::reverse 函数
bool is_palindrome(const std::string& s) {
std::string reversed_s = s; // 复制一个字符串
std::reverse(reversed_s.begin(), reversed_s.end()); // 反转字符串
return s == reversed_s;
}
// 测试
int main() {
std::cout << is_palindrome("abcba") << std::endl; // 1
std::cout << is_palindrome("hello") << std::endl; // 0
return 0;
}
```
注意,上述代码中的 `std::string` 类型需要包含头文件 `<string>`,`std::cout` 和 `std::endl` 需要包含头文件 `<iostream>`。