程序每次读入一个正3位数,然后输出按位逆序的数字。注意:当输入的数字含有结尾的0时,输出不应带有前导的0。比如输入700,输出应该是7。 输入格式: 每个测试是一个3位的正整数。 输出格式: 输出按位逆序的数。 输入样例: 123 输出样例: 321 使用C语言
时间: 2024-09-23 11:15:32 浏览: 38
在C语言中,可以使用位运算符来实现三位数的按位逆序。这里是一个简单的程序示例,它首先读取用户的输入,然后通过右移和左移操作来交换每一位:
```c
#include <stdio.h>
#include <string.h> // 用于strlen获取字符串长度
// 按位逆序处理字符串(去掉开头的0)
void reverseWithoutLeadingZeroes(char str[]) {
int len = strlen(str);
for(int i = 0; i < len / 2; ++i) {
if(str[i] == '0' && str[len - i - 1] != '0') { // 如果当前位是0并且倒数第i位不是0,则交换
char temp = str[i];
str[i] = str[len - 1] = temp;
}
}
}
// 主函数
int main() {
char input[4]; // 存储三位数,包括末尾的'\0'
scanf("%s", input); // 读取输入的三位数字符串
// 检查是否超过三位
if(strlen(input) > 3 || input[0] == '0' && input[1] == '\0') {
printf("Invalid input. Please enter a three-digit positive number.\n");
return 1;
}
// 按位逆序并去掉前导零
reverseWithoutLeadingZeroes(input);
// 输出结果
printf("%s\n", input);
return 0;
}
```
当你运行这个程序并输入123,输出将会是321。请注意,这个程序假设输入始终是一个有效的三位数。如果输入包含非数字字符或者不足三位,会提示错误信息。
阅读全文