#include<stdio.h> main() { int i,j,n,m; int a[16]= { 0 };_百度...
发布网友
发布时间:2024-10-03 22:23
我来回答
共1个回答
热心网友
时间:2024-11-01 07:47
这是个将10进制数转换为2进制数的C程序。
首先要说明一下将10进制数转换为2进制数的步骤。
将要求的数除以2,得到商和余数,再将得到的商除以2,以此类推直至商为0。倒序排列余数得解。
以10为例:
10÷2=5余0,5÷2=2余1,2÷2=1余0,1÷2=0余1
将每个式子的余数倒序排列得到1010,即10的二进制是1010。
对程序的解释:
#include<stdio.h>
main()
{
int
i,j,n,m;
int
a[16]={0};
/*
创建一个能存放16个数字的数组用来存放最终的2进制结果,初始化每位都为0
*/
printf("please
input
the
decimalism
number(0~32767):\n");
scanf("%d",&n);
/*
输入要转换为2进制的数
*/
for(m=0;m<15;m++)
/*
输入要求小于32768,所以数组的最后一位实际上是用不到的,不过还是建议写成
for(m=0;m<=15;m++)
*/
{
i=n%2;
/*
将输入的数除以2,得到余数
*/
j=n/2;
/*
将输入的数除以2,得到商
*/
n=j;
/*
将第11行求得的商作为新的被除数,以便下一步除以2
*/
a[m]=i;
/*
将第10行求得的余数存进数组,倒序排列后就是最终结果
*/
}
for(m=15;m>=0;m--)
/*
从后往前打印数组,达到倒序的目的
*/
{
printf("%d",a[m]);
/*
打印数组
*/
if(m%4==0)
printf("
");
/*
每4位打印一个空格,使结果美观
*/
}
return
0;
}
仅供参考。