我正试图通过这个程序将十进制转换成二进制,但输出总是缺少最后一个数字。
例如,我将为商输入“123”,结果将是“111101”而不是“1111011”。我测试的每个输入都会发生这种情况。每个数字都在正确的位置,除了最后一个数字不见了。
任何帮助都将不胜感激。

#include <stdio.h>
int main ()
{
    int quotient = 123;
    int i = 0;
    int d1 = quotient % 2;
    quotient = quotient / 2;
    int c = 0;
    int a = 0;
    int number[32] = {};

    while (quotient != 0)
    {
        i = i+1;
        d1 = quotient % 2;
        quotient = quotient / 2;
        c++;
        number[c]=d1;
    }

    for(a = 0; a < c; a = a + 1 )
    {
        printf("%d", number[c-a]);
    }
    return 0;
}

最佳答案

问题是,在while循环之前划分一次:

int d1 = quotient % 2;
quotient = quotient / 2;

将其替换为:
int d1 = 0;

一切都会好起来的。

09-05 02:52