c++中ispalindrome函数
时间: 2023-12-16 19:06:07 浏览: 36
判断一个字符串是否是回文字符串,你可以利用双指针来判断,判断过程如下:
bool ispalindrome(char *s){
if(s == NULL) return false;
int len = strlen(s);
char *start = s, *end = s + len - 1;
while(start <= end){
if(*start++ != *end--) return false;
}
return true;
}
这是一个简单的C语言实现,可以用来判断一个字符串是否是回文字符串。
相关问题
c++中递归函数练习题
好的,以下是一些 C++ 中的递归函数练习题:
1. 编写一个递归函数,计算 n 的阶乘
```cpp
int factorial(int n) {
if (n == 0) {
return 1;
} else {
return n * factorial(n - 1);
}
}
```
2. 编写一个递归函数,计算斐波那契数列的第 n 项
```cpp
int fibonacci(int n) {
if (n == 0 || n == 1) {
return n;
} else {
return fibonacci(n - 1) + fibonacci(n - 2);
}
}
```
3. 编写一个递归函数,计算一个数字的二进制表示中 1 的个数
```cpp
int countOnes(int n) {
if (n == 0) {
return 0;
} else {
return (n % 2 == 1) + countOnes(n / 2);
}
}
```
4. 编写一个递归函数,计算一个数字的反转
```cpp
int reverse(int n) {
if (n < 10) {
return n;
} else {
return (n % 10) * pow(10, floor(log10(n))) + reverse(n / 10);
}
}
```
5. 编写一个递归函数,计算一个字符串的长度
```cpp
int stringLength(string str) {
if (str == "") {
return 0;
} else {
return 1 + stringLength(str.substr(1));
}
}
```
6. 编写一个递归函数,判断一个字符串是否是回文字符串
```cpp
bool isPalindrome(string str) {
if (str.length() <= 1) {
return true;
} else if (str[0] != str[str.length() - 1]) {
return false;
} else {
return isPalindrome(str.substr(1, str.length() - 2));
}
}
```
7. 编写一个递归函数,计算一个数组中所有元素的和
```cpp
int arraySum(int arr[], int size) {
if (size == 0) {
return 0;
} else {
return arr[0] + arraySum(arr + 1, size - 1);
}
}
```
8. 编写一个递归函数,计算一个数组中所有元素的平均值
```cpp
double arrayAverage(int arr[], int size) {
if (size == 0) {
return 0;
} else {
return (arr[0] + (size - 1) * arrayAverage(arr + 1, size - 1)) / size;
}
}
```
9. 编写一个递归函数,计算一个数组中的最大值
```cpp
int arrayMax(int arr[], int size) {
if (size == 1) {
return arr[0];
} else {
return max(arr[0], arrayMax(arr + 1, size - 1));
}
}
```
10. 编写一个递归函数,计算一个数组中的最小值
```cpp
int arrayMin(int arr[], int size) {
if (size == 1) {
return arr[0];
} else {
return min(arr[0], arrayMin(arr + 1, size - 1));
}
}
```
希望这些练习题能够帮助你练习 C++ 中的递归函数。
判断回文数c++ bool函数
判断一个数是否为回文数的C++函数通常会采用一种常见的技巧,即忽略数字的顺序,比较原始数值和反转后的数值是否相等。下面是一个简单的bool类型的函数示例:
```cpp
#include <iostream>
#include <string>
// 将整数转换成字符串便于处理
std::string intToString(int num) {
std::ostringstream oss;
oss << num;
return oss.str();
}
// 判断回文数
bool isPalindrome(int num) {
// 转换为字符串并去掉前导0
std::string strNum = intToString(num);
strNum.erase(0, strNum.find_first_not_of(""));
// 比较原数和反转后的字符串是否相等
return strNum == std::string(strNum.rbegin(), strNum.rend());
}
int main() {
int num;
std::cout << "Enter a number to check if it's a palindrome: ";
std::cin >> num;
if (isPalindrome(num)) {
std::cout << num << " is a palindrome.\n";
} else {
std::cout << num << " is not a palindrome.\n";
}
return 0;
}
```
在这个函数中,我们首先将输入的整数转换为字符串,然后删除非数字字符,最后通过比较原始字符串和反转后的字符串来判断是否为回文。
阅读全文