c语言十进制转二进制

-1 c

我对编码很陌生。这是我编写的一个程序,用于将十进制转换为二进制,但有一个问题我得到的结果是相反的

示例:122is 的二进制,1111010我正在获取 output 0101111

谁能告诉我是否可以在我的代码中反转输出?或者我可以在以下进行哪些更改以获得正确的输出?

#include<stdio.h>
int main()
{
 int n, q, r;
    
    printf("Enter the decimal Number : ");
    scanf("%d", &n);
    int num=n;
    while(n!=0)        
    {
        r=n%2;
        q=n/2;
        printf("%d", r);
        n=q;
    }
    return 0;   
}
Run Code Online (Sandbox Code Playgroud)

yas*_*sam 6

似乎您是编码新手。问题出在这里并不重要。

十进制转二进制是这样的

例如:

除以 2 提醒 少量
10/2 5 0 0
5/2 2 1 1
2/2 1 0 2
1/2 0 1 3

=(1010)

所以输出应该从提醒栏的底部到顶部有数字。您的输出是从上到下打印的。

请参阅下面的代码,您需要一个数组来存储提醒并以相反的顺序打印数组,以便获得所需的输出

#include<stdio.h>    
#include<stdlib.h>  
int main(void){  
  int a[10],n,i;
  printf("Enter the decimal Number : ");  
  scanf("%d",&n);    
  for(i=0;n>0;i++)    
  {    
    a[i]=n%2;    
    n=n/2;    
  }    
  printf("\nBinary of Given Number is=");    
  for(i=i-1;i>=0;i--)    
  {    
   printf("%d",a[i]);    
  }    
  return 0;  
}  
Run Code Online (Sandbox Code Playgroud)

  • 欢迎来到SO。对于初学者来说,正确的缩进比经验丰富的程序员更重要。在答案中也应该考虑这一点。您也可以将 `main` 的签名更改为 `int main (void)` 或 `int main(int, char*[])`。空参数列表是一项已弃用的功能,不应再使用。 (3认同)