利用switch实现正整数(1~3)位的对调
时间: 2024-11-06 21:24:21 浏览: 21
在C++中,你可以使用`switch`语句配合位操作来实现正整数的二进制表示中的位对调。首先,我们需要获取输入数字的每一位,然后根据这些位进行相应的调整。这里我们假设你想交换一个正整数的个位和百位(如果是个三位数)。以下是一个简单的示例:
```cpp
#include <iostream>
int swapBits(int num) {
int temp = 0; // 临时变量用来存储高位
switch (num / 100) { // 分割成百位、十位和个位
case 1: // 如果是三位数,处理百位
temp = num % 100;
num = num / 100 + (temp * 10); // 百位移到个位
break;
case 2: // 如果是两位数,没有百位,直接返回原数
return num;
default: // 一位数,不需要处理
return num;
}
switch (temp / 10) { // 分割成十位和个位
case 1: // 处理十位
temp %= 10;
num = num * 10 + temp; // 十位移到个位
break;
default: // 没有十位,直接返回
num = num * 10 + temp; // 原来的个位现在变成十位
break;
}
return num;
}
int main() {
int input;
std::cout << "请输入一个1到3位的正整数: ";
std::cin >> input;
if (input >= 1 && input <= 999) {
int swappedNum = swapBits(input);
std::cout << "交换后的数为: " << swappedNum << std::endl;
} else {
std::cout << "输入超出范围,请输入1到3位的正整数." << std::endl;
}
return 0;
}
```
这个程序首先检查输入是否在有效范围内,然后通过两次`switch`分别处理个位和十位的位移。请注意,这个方法并不适用于任意长度的位对调,因为它只针对1到3位的情况。
阅读全文