程序每次读入一个正3位数,然后输出按位逆序的数字。注意:当输入的数字含有结尾的0时,输出不应带有前导的0。用C语言,编写要简洁
时间: 2024-09-23 14:16:09 浏览: 36
你可以使用C语言中的循环结构和位操作符来实现这个功能。下面是一个简洁的示例程序:
```c
#include <stdio.h>
void reverseBits(int num) {
int reversed = 0;
while (num != 0) {
reversed |= (num & 1); // 将最低位取反并左移一位
num >>= 1; // 右移一位去掉最低位
}
if (reversed == 0 && num == -1) { // 如果原数是000,则处理特殊情况避免前导0
printf("0");
} else {
printf("%d", reversed);
}
}
int main() {
int input;
printf("请输入一个三位正整数: ");
scanf("%d", &input);
// 检查输入是否合法
if (input >= 0 && input <= 999) {
reverseBits(input);
} else {
printf("输入错误,只能输入三位正整数!\n");
}
return 0;
}
```
在这个程序中,`reverseBits`函数接收一个3位数,通过按位操作逐位取反并将结果左移,直到所有位都被处理。对于输入的000,需要特殊处理,因为直接计算可能会得到-1,所以额外检查了`reversed == 0 && num == -1`。
运行此程序时,按照提示输入一个三位数,它将输出对应的位逆序后的数字。如果没有输入正确的三位数,会提示错误信息。
阅读全文