C语言编写程序,输入一个正整数,将各位上为偶数的数取出,并按原来从高位到低位相反的顺序组成一个新的数输出。用循环
时间: 2024-10-12 14:15:29 浏览: 61
在C语言中,你可以使用嵌套循环以及位运算来实现这个功能。这里是一个简单的示例代码:
```c
#include <stdio.h>
int reverse_odd(int num) {
int result = 0; // 用于存放结果的新数
int bit = 1 << 30; // 初始位为最右边的1
while (num > 0) {
if ((num & bit) != 0) { // 检查当前位是否为1
// 将最高位的偶数位反转并添加到结果中
result |= (bit >> 1);
}
bit <<= 1; // 移动到下一位
num >>= 1; // 右移原数,检查下一位
}
return result;
}
int main() {
int input;
printf("请输入一个正整数: ");
scanf("%d", &input);
if (input <= 0) {
printf("输入错误! 请输入一个正整数.\n");
} else {
int reversed_num = reverse_odd(input);
printf("新组成的数字(偶数位反转): %d\n", reversed_num);
}
return 0;
}
```
在这个代码里,`reverse_odd`函数通过不断地左移`bit`来检查每一位,如果该位是1(即为偶数),就将其右移一位(相当于除以2)并添加到结果中。最后,`main`函数中读取用户输入并调用此函数。
阅读全文