首页 > 解决方案 > 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;   
}

标签: c

解决方案


好像您是编码新手。没关系,问题就在这里。

十进制转二进制是这样的,

例如:

除以 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;  
}  

推荐阅读