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

用dowhile结构... 用do while 结构 展开
 我来答
kaixingui2012
推荐于2018-02-23 · TA获得超过4.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:6289万
展开全部

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");
}
布鲁猫
推荐于2017-11-26 · TA获得超过646个赞
知道小有建树答主
回答量:128
采纳率:100%
帮助的人:61万
展开全部
//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");
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
知道不知道巨蟹
2013-11-14 · 超过17用户采纳过TA的回答
知道答主
回答量:77
采纳率:0%
帮助的人:45.5万
展开全部
#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();}的模型
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
闲来无事id
2013-11-14 · TA获得超过108个赞
知道答主
回答量:71
采纳率:0%
帮助的人:79.6万
展开全部
#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);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
White_MouseYBZ
2013-11-16 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6467万
展开全部
//#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");
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式