c - 十进制转二进制错误

标签 c binary decimal

我正在尝试创建一个将十进制转换为二进制并在二进制之前打印 0b 的程序。

我需要程序在输入为 0 时打印 0b0,在输入为 29 时打印 0b11101。我似乎可以做一个,但不能做另一个,当我修复那个错误时,另一个停止工作

我哪里错了?

#include <stdio.h>
int main()
{

int n,i = 0,j=0,k;

scanf("%d",&n);
int bin[100];

    k=n;

    //printf("n is %d \n",n);
    while(n!=0)
    {
        //printf("n is %d :\n",n);
     bin[i]= n%2;
        //printf ("n/2 is  %d\n",n%2);
     n=(n-n%2)/2;
     i++;
        //printf("i is %d\n",i);
    }
printf("0b");
    //if (n='0')
    //{
    //  printf("0");
    //}


    //else
    //{
        for (j=i;j>0;j--)
        {
            //printf("\n j is,%d and there ,is %d\n",j,bin[(j-1)]);
            printf("%d",bin[(j-1)]);

        }
    //}

}

最佳答案

0 不需要被视为特例。只需修复:使用 do循环而不是 while () .

#include <stdio.h>
int main() {
  int n,i = 0,j=0,k;
  scanf("%d",&n);
  int bin[100];
  // k=n;  // not needed

  // while(n!=0) {
  do {
    bin[i]= n%2;

    // Another simplification
    // n=(n-n%2)/2;
    n /= 2;

    i++;
  } while (n);
  printf("0b");
  for (j=i;j>0;j--) {
    printf("%d",bin[(j-1)]);
  }
}

处理 n<0 所需的其他编码.

关于c - 十进制转二进制错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39432698/

相关文章:

python - 使用 django HttpResponse 返回二进制数据

c++ - 传输 libcurl 后损坏的二进制文件

c++ - 将二进制转换为十进制内置函数

c++ - 如何在C++中编译和链接头文件?

c - 二进制流上带有 WHENCE 的 SEEK_END

entity-framework - 如何使 c# 十进制匹配 SQL 十进制以进行 EF 更改跟踪?

Python Decimal to string 产生奇怪的科学记数法

c++ - MsgPack c++ 打包长度超过 32 个字符的字符串[Ubuntu]

c - 如何通过管道发送文件结尾而不关闭管道?

c - 对于wcscmp()和wcscoll()来说是宽字符比较。什么是差异?