• 智能AI问答!更聪明、更完整、原创作!
  • 一款基于GPT的超级AI机器人,可以回答问题、聊天、创作、写文案!

输入一个十进制整数,将其转换位二进制后反序再转成新的十进制,用while

发布于 2024-07-31 13:17:05

下面是一个C语言程序,实现将一个十进制整数转换为二进制,然后反序,最后再转换回十进制整数的过程:

#include <stdio.h>

int main() {
    int decimal, binary, reverseBinary, remainder, result = 0;

    printf("请输入一个十进制整数:");
    scanf("%d", &decimal);

    // 使用while循环将十进制转换为二进制
    binary = decimal;
    while (binary > 0) {
        remainder = binary % 2; // 计算余数作为二进制位
        result = result * 10 + remainder; // 将二进制位添加到结果字符串的前面(反序)
        binary /= 2; // 除以2继续转换
    }

    // 当二进制数为0时,说明原数为0
    if (result == 0) {
        result = '0'; // 使用字符0而不是整数0来表示
    }

    // 将二进制反序后的字符串转换为十进制整数
    // 由于前面是反序得到的二进制数,这里顺次读取每一位即可
    reverseBinary = result; // 最初结果就是反序二进制
    while (reverseBinary > 0) {
        remainder = reverseBinary % 10; // 取最低位二进制
        result = result * 2 + remainder; // 二进制转十进制
        reverseBinary /= 10; // 去掉最低位
    }

    printf("转换后的十进制整数是:%d\n", result);
    return 0;
}

这个程序首先读取用户输入的十进制整数,并将其存储在变量decimal中。然后使用一个while循环来将这个十进制整数转换为二进制,存储在binary中,并将其每一位反序存储在字符串变量result中。

之后,再次使用一个while循环,这次是将反序后的二进制字符串reverseBinary转换回十进制整数,并将结果存储在result中。

注意,为了简化程序,这里使用了整数来处理二进制位,这意味着在实际应用中可能需要考虑数字的大小限制,避免溢出。

0 条评论

发布
问题

在线
客服