reverse函数c++整数翻转
时间: 2024-11-07 17:13:36 浏览: 47
在 C++ 中,如果你想要反转一个整数(通常是整型变量),可以将整数转换为字符串,然后使用内置的 `std::reverse` 函数对字符串进行翻转,最后再转换回整数。这里是一个简单的示例:
```cpp
#include <iostream>
#include <string>
// 将字符串反转并转换回整数
int reverseInteger(int num) {
std::string strNum = std::to_string(num);
std::reverse(strNum.begin(), strNum.end());
return std::stoi(strNum); // 使用 stoi 将字符串转换回整数
}
int main() {
int originalNum = 12345;
int reversedNum = reverseInteger(originalNum);
std::cout << "Original number: " << originalNum << "\n";
std::cout << "Reversed number: " << reversedNum << "\n";
return 0;
}
```
在这个例子中,`reverseInteger` 函数会返回输入整数的逆序版本。注意这种方法只适用于正整数,对于负数,它的逆序表示可能会不符合常规的数学意义。
相关问题
倒序输出的函数c++
在C++中,倒序输出一个序列通常可以使用循环或迭代器逆向遍历数组或容器。这里有一个简单的例子,展示如何使用标准库`std::reverse`函数配合循环来倒序输出整数数组:
```cpp
#include <iostream>
#include <algorithm> // 引入reverse库
void reversePrint(int arr[], int size) {
std::cout << "Original array: ";
for (int i = 0; i < size; ++i)
std::cout << arr[i] << " ";
// 使用reverse()函数将数组元素反转
std::reverse(arr, arr + size);
std::cout << "\nReversed array: ";
for (int i = size - 1; i >= 0; --i)
std::cout << arr[i] << " ";
}
int main() {
int numbers[] = {1, 2, 3, 4, 5};
int arraySize = sizeof(numbers) / sizeof(numbers[0]);
reversePrint(numbers, arraySize);
return 0;
}
```
在这个代码片段中,`reversePrint`函数接受一个整数数组和其大小作为输入,首先打印原始数组,然后使用`std::reverse`函数将数组元素翻转,最后再倒序输出反转后的数组。
用c++编写一个将整条链表翻转过来的小程序。任务: 编写一个程序,建立一个能存放int型数据的链表; 设计一个函数reverse实现将这条链表逆转过来,即将原来的表头变成表尾,原来的表尾变成表头; 在主函数中实现: 用户输入链表结点个数; 依次输入各结点整数值; 调用函数reverse,然后遍历并打印逆转后的链表结点整数值。 比如: 用户输入"3 7 8 9" (表示链表结点数3,整数值依次是7 8 9),那么程序应该输出"9 8 7" 效果如下: 输入: 3 7 8 9 输出: 9 8 7
下面是使用C++编写的将链表翻转的程序:
```cpp
#include <iostream>
// 定义链表节点结构
struct ListNode {
int val;
ListNode* next;
ListNode(int x) : val(x), next(nullptr) {}
};
// 将链表翻转
ListNode* reverse(ListNode* head) {
ListNode* prev = nullptr;
ListNode* curr = head;
ListNode* next = nullptr;
while (curr != nullptr) {
next = curr->next;
curr->next = prev;
prev = curr;
curr = next;
}
return prev;
}
int main() {
int n;
std::cout << "请输入链表节点个数n:";
std::cin >> n;
// 创建链表
ListNode* dummy = new ListNode(-1);
ListNode* curr = dummy;
int val;
std::cout << "请输入链表节点的整数值:";
for (int i = 0; i < n; i++) {
std::cin >> val;
curr->next = new ListNode(val);
curr = curr->next;
}
// 翻转链表
dummy->next = reverse(dummy->next);
// 遍历并打印逆转后的链表结点整数值
curr = dummy->next;
std::cout << "逆转后的链表结点整数值:" << std::endl;
while (curr != nullptr) {
std::cout << curr->val << " ";
curr = curr->next;
}
std::cout << std::endl;
// 释放链表内存
curr = dummy;
while (curr != nullptr) {
ListNode* temp = curr;
curr = curr->next;
delete temp;
}
return 0;
}
```
在这个程序中,我们首先创建了一个带有虚拟头节点(dummy)的链表,并根据用户输入的节点个数和整数值构建了链表。然后,我们调用`reverse`函数来翻转链表,该函数使用迭代方法将链表逆转。最后,我们遍历并打印逆转后的链表节点整数值。
希望这个程序对你有所帮助!如果你有任何其他问题,请随时提问。
阅读全文