c语言编程,如何将十进制转化为2进制

用do while 结构

c语言编程将十进制转化为2进制可按手工转换规则进行程序转换。

    整数占四个字节,每字节8位,共32位。所以,可以定义一个32位的数组来存储转换结果。

    循环将整数进行除2取余数,余数存储到数组中。

    当整数整除为0时,结束循环

    逆序输出数组,得到转换结果

参考代码:

#include <stdio.h>
void main()
{
    int c[32],i=0,n;
    scanf("%d", &n) ; //输入待转换整数n
    do {
        c[i++]=n%2;
        n/=2;
    } while(n!=0) ;

    for(i--;i>=0;i--)
        printf("%d",c[i] );
    printf("\n");
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-11-26
//do while把for改改


#include <stdio.h>
#include <math.h>

//函数声明 
void tenTtwo(int x);

void main()
{
    int a;
printf("请输入一个十进制数:");
scanf("%d",&a);
printf("二进制数为");
    tenTtwo(a);
}


//函数实现 
void tenTtwo(int x)
{

    int j=0;
int d[1000];  //暂时分配1000块空间
int num=0;    //用于计数 判断用户所需要多少长度的二进制数
//短除法 将余数放置于数组中

    
    do
    {
       d[j]=(x%2);//余数
       x=(x/2); 
       j++;
       num++;
    }while(x!=1);
    
    d[num]=1;  //最后一个数为1 
    
   /* 
    for(j=0;j<1000;j++)
{
   d[j]=(x%2);  //余数
   x=(x/2);     
   if(x==1)    //最后一个数
   { 
  d[j+1]=1; 
  break;
   }
   num++;
}*/

    //num++;
//逆向输出数组中的数据拼接成二进制数
for(j=num;j>=0;j--) 
printf("%d",d[j]);
printf("\n");
}

追问

我们才学简单的内容,没有这么深,就是#include void main(){………do{}while();}的模型

追答

是用的do while啊,也没有你想象的那么深,跟楼上的相比我这已经非常简单了,只不过使用了函数,和数组而已.

#include <stdio.h>
#include <math.h>
void main()
{
 int x;
 int j = 0;
 int d[1000];  //暂时分配1000块空间
 int num = 0;  //用于计数 判断用户所需要多少长度的二进制数
 printf("请输入一个十进制数:");
 scanf("%d", &x);
 //短除法 将余数放置于数组中
 do
 {
  d[j] = (x % 2);//余数
  x = (x / 2);
  j++;
  num++;
 }
 while (x != 1);
 d[num] = 1;  //最后一个数为1
 printf("二进制数为");
 //逆向输出数组中的数据拼接成二进制数
 for (j = num; j >= 0; j--)
  printf("%d", d[j]);
 printf("\n");
}

追问

数组我们现在还没有学过啊,如果交上去老师会看出来的

追答

那就没办法了

追问

本回答被提问者采纳
第2个回答  2013-11-14
#include "stdio.h"
#define StackSize 100
typedef int ElemType;
typedef struct {
ElemType elem[StackSize];
int top;
}SqStack;

InitStack(SqStack *pS)
{
pS->top=0; /* top指向栈顶的上一个元素 */
}

int Push(SqStack *pS,ElemType e)
{
if (pS->top==StackSize-1) /* 栈满 */
return 0;

pS->elem[pS->top]=e;
pS->top=pS->top+1;
return 1;
}

int Pop(SqStack *pS,ElemType *pe)
{
if (pS->top==0) /* 栈空 */
return 0;

pS->top = pS->top - 1;
*pe = pS->elem[pS->top];
return 1;
}

main()
{
SqStack S;
ElemType e;
int N;

InitStack(&S);
printf("请输入一个十进制整数:\n");
scanf("%d",&N);

do
{
e = N % 2;
Push(&S,e);
N = N/2;
} while(N);

while(Pop(&S,&e))
{
printf("%d",e);
}
printf("\n");
return 0;
}追问

我们才学简单的内容,没有这么深,就是#include void main(){………do{}while();}的模型

第3个回答  2013-11-14
#include <stdio.h>
#include <math.h>
void main()
{
    int iInput = 0;
    scanf("%d", &iInput);
    int iResult = 0;
    int iQuotient = 0; //商
    int iRemainder = 0; //余数
    int iPlace = 0;
    do 
    {
        iRemainder = iInput % 2;
        iQuotient = iInput / 2;
        iResult += iRemainder * pow((double)10, iPlace);
        iPlace++;
        iInput = iQuotient;
    } while (iInput);
    printf("\n结果:%d", iResult);
}

第4个回答  2013-11-16
//#include "stdafx.h"//vc++6.0加上这一行.
#include "stdio.h"
void dfs(int k){
if(k) dfs(k/2);
if(k) printf("%d",k%2);
}
void main(void){
int n;
printf("Type an integer...\nn=");
scanf("%d",&n);
printf("Binary of %d is ",n);
dfs(n);
printf("\n");
}本回答被网友采纳
相似回答