数6 输入一个十进制正整数,将它对应的二进制数的各位反序,形成新的十进制数输出。如:13-->1101-->1011-->11如:10-->1010-->0101-->5 #include <stdio.h> int main() int x.y.t; scanf("%d",&x); y=0; while( x){ 2分2分2分 printf("%d\n",y); 15 return 0;}
时间: 2023-06-04 19:03:39 浏览: 183
题目要求我们将输入的十进制正整数转化成二进制数,并将其各位反向排列,最后再将结果转化成十进制输出。
举个例子,如输入的数字为13,我们可以先将其转化成二进制数,得到1101。再将其各位反向排列,得到1011。最后将1011转化成十进制数,得到11,就是最终的输出结果。
同理,如果输入的数字为10,我们可以先将其转化成二进制数,得到1010。再将其各位反向排列,得到0101。最后将0101转化成十进制数,得到5,就是最终的输出结果。
相关问题
输入一个十进制正整数,将它对应的二进制数的各位反序,形成新的十进制数输出 C语言
可以使用位运算和循环来解决这个问题,具体实现如下:
```c
#include <stdio.h>
int main() {
int n, i, reversed = 0;
printf("请输入一个十进制正整数:");
scanf("%d", &n);
for (i = 0; n > 0; i++) {
reversed = (reversed << 1) | (n & 1); // 将n的最低位插入到reversed的最高位
n >>= 1; // 将n向右移动一位
}
printf("反序后的二进制数为:%d\n", reversed);
return 0;
}
```
输入一个十进制正整数,例如输入10,输出结果为:
```
请输入一个十进制正整数:10
反序后的二进制数为:5
```
解释:10的二进制数为1010,反序后为0101,对应的十进制数为5。
注意:上述代码中使用了位运算符号 `<<` 和 `|`,需要了解位运算的相关知识。
用c语言输入一个十进制数,将它对应的二进制数各位反序,形成新的十进制数输出
这个问题可以回答。请见下面的代码:
```c
#include <stdio.h>
int main()
{
int decimal, reversed = 0, remainder, binary = 0, position = 1;
printf("请输入一个十进制数:");
scanf("%d", &decimal);
// 将十进制数转换为二进制数并颠倒各位
while (decimal != 0)
{
remainder = decimal % 2;
binary += remainder * position;
position *= 10;
decimal /= 2;
}
while (binary != 0)
{
remainder = binary % 10;
reversed = reversed * 10 + remainder;
binary /= 10;
}
printf("颠倒后的二进制数为:%d\n", reversed);
return 0;
}
```
该代码将首先提示用户输入一个十进制数,并使用 scanf 函数将其存储在一个整数变量 decimal 中。然后,将十进制数转换为二进制数并存储在变量 binary 中,并且在转换过程中使用 position 变量来确定每个二进制位的权值。最后,将二进制数的各位反序,并输出反序后的二进制数。