C语言,使用数组,编写一个十进制正整数转换为二进制数的转换工具 5

使用数组,编写一个十进制正整数转换为二进制数的转换工具。(十进制数m由键盘输入)(如:输入65,输出为1000001),需要思路。... 使用数组,编写一个十进制正整数转换为二进制数的转换工具。(十进制数m由键盘输入)(如:输入65,输出为1000001),需要思路。 展开
 我来答
莫道無情
2019-07-09 · TA获得超过1.5万个赞
知道答主
回答量:317
采纳率:100%
帮助的人:8.8万
展开全部

C语言程序如下:

#include<stdio.h>

int main(){

int N,i,t;

int a[100];

scanf("%d",&N);

for(i=0;N!=0;i++){

a[i]=N%2;

N=N/2;

}

for(t=i-1;t>=0;t--){

printf("%d",a[t]);

}

}

思路:反复地将n除以2取余数;将取出的余数用数组存放;由于先取出的是低位数据,后取出的是高位数据,因此需将数组逆序输出。

扩展资料:

1、十进制整数转二进制数:“除以2取余,逆序排列”(除二取余法)

2、十进制小数转二进制数:“乘以2取整,顺序排列”(乘2取整法)

3、十进制负数转二进制:“先取正数的二进制值,再取反,加1”

参考资料:百度百科-二进制

仙亦佛
2018-01-10 · TA获得超过366个赞
知道小有建树答主
回答量:707
采纳率:59%
帮助的人:430万
展开全部

如下


代码
#include
void getbirn( int a,char *s)
{
int m=a,i=0,j=0;
char str[64];
while(m)
{ str[i]=m%2+'0';
if (m=m/2)
i++;
}
for(j=0;i>=0;i--,j++)
{
*(s+j)=str[i];
}
*(s+j)='\0';
return;
}
int main(void)
{
int n;char s[64];
while(scanf("%d",&n)!=1||n<=0);
getbirn(n,s);
puts(s);
return 0;
}

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
沧海雄风2009
2018-01-10 · TA获得超过1.1万个赞
知道大有可为答主
回答量:8525
采纳率:79%
帮助的人:2868万
展开全部
#include <stdio.h>

int main()
{
int i=0,j=0,a = 0,n[100]={0};
scanf("%d",&a);
printf("input=%d\n",a);
while (a)
{
n[i++] = a%2;
a/=2;
}

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

printf("\n");
return 0;
}

65

input=65

1000001

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式