c++输入一个数 怎么把它翻转
时间: 2023-10-26 15:02:51 浏览: 31
要翻转一个数字,可以将该数字转换为字符串,然后对字符串进行反转,最后再将反转后的字符串转换回数字。
首先,将输入的数字转换为字符串的方法是使用str()函数,将数字作为参数传递给该函数即可。接下来,使用字符串的切片操作[::-1]可以实现字符串的反转,其中[::-1]表示从字符串末尾开始,以步长为-1逆序提取字符串中的字符。最后,使用int()函数将反转后的字符串转换回数字。
下面是一个示例代码,假设输入的数字为num:
num_str = str(num) # 将数字转换为字符串
reverse_num_str = num_str[::-1] # 反转字符串
reverse_num = int(reverse_num_str) # 将反转后的字符串转换为数字
通过上述步骤,就可以翻转输入的数字。例如,如果输入的数字为12345,则经过上述步骤后,得到的翻转数字为54321。
需要注意的是,对于带有负号的数字,翻转后的结果也会带有负号。例如,对于输入的数字-678,翻转后的结果为-876。
相关问题
c++ 翻转链表,k个一组
题目描述:
给定一个链表,每k个节点为一组进行翻转。例如,给定链表1->2->3->4->5,k=2,则应返回2->1->4->3->5。请注意,你需要在不修改链表节点值的情况下完成此操作。
示例:
输入: 1->2->3->4->5, k = 2
输出: 2->1->4->3->5
思路:
这道题是链表的操作,我们可以用递归来实现,每次递归处理k个节点,翻转它们,返回翻转后的头节点,然后将它接到上一组的尾部。
具体实现:
首先,我们需要定义一个辅助函数reverse,用来翻转链表。它的实现方法是,用三个指针pre、cur、next来遍历链表,将cur的next指向pre,然后将三个指针往后移动一个节点,重复这个过程,直到遍历完整个链表。
接下来,我们可以定义一个递归函数,它的参数是链表头节点和k。如果链表的长度小于k,说明不需要翻转,直接返回头节点;否则,我们先翻转前k个节点,然后将它们的尾节点接到下一组翻转后的头节点,递归处理下一组节点。每次递归返回的是翻转后的头节点,最后将所有头节点连接起来即可。
代码实现:
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* reverse(ListNode* head) {
ListNode* pre = NULL;
ListNode* cur = head;
while (cur != NULL) {
ListNode* next = cur->next;
cur->next = pre;
pre = cur;
cur = next;
}
return pre;
}
ListNode* reverseKGroup(ListNode* head, int k) {
ListNode* cur = head;
int cnt = 0;
while (cur != NULL && cnt != k) { // 找到第k+1个节点
cur = cur->next;
cnt++;
}
if (cnt == k) { // 如果找到了,就翻转前k个节点
cur = reverseKGroup(cur, k); // 递归处理下一组节点
while (cnt-- > 0) { // 将翻转后的头节点接到下一组节点的尾部
ListNode* next = head->next;
head->next = cur;
cur = head;
head = next;
}
head = cur;
}
return head;
}
};
C++输入一个十进制数,把它转换成二进制,倒序输出(去除前导0)
好的,这道题目与之前的题目类似,只是输出的顺序颠倒了一下。下面是具体的实现过程:
```cpp
#include <iostream>
#include <bitset>
#include <algorithm>
using namespace std;
int main() {
int n = 10; // 示例输入为 10
bitset<32> binary(n);
string str = binary.to_string();
reverse(str.begin(), str.end());
str.erase(0, str.find_first_not_of('0'));
if (str.empty()) {
str = "0";
}
cout << str << endl;
return 0;
}
```
首先,我们使用 `bitset` 将十进制数转换成二进制数,并将其以字符串的形式保存到变量 `str` 中。接着,使用 `reverse` 函数将字符串翻转。然后,我们需要去掉前导 0,方法与之前的题目类似,使用 `erase` 函数和 `find_first_not_of` 函数即可。最后,如果字符串为空,则将其赋值为 0。
输出结果为:
```
0101
```
希望能对你有所帮助!