#include
voiditob(intn,chars[],intb)
{
inti=1;
for(;i<=32;i++)//共循环了32次,保证得到32位的二进制数
{
s[i-1]=n%b;//数组是从编号0开始的,一直到编号31结束
n=n/b;//用模除的方法依次得到每位进制数
}
for(i=32;i>0;i--)
{
printf("%d",s[i-1]);
}
}
intmain()
{
charret[32];
chars[32];
intn=0;
scanf("%d",&n);
itob(n,s,2);//此时进制b=2
return0;
}
经过深层次的学习,我将此题又做进一步的修改与完善,解决了任意进制输出的效果,并且每次输出不需要32位全部输出,而是具体情况需要几位二进制就输出几位数。代码如下:#include
voidreverse(intlen,chararr[])//逆置输出正确的进制位
{
intleft=0;
intright=len-1;
while(left
{
chartemp=arr[left];//a[0]与最后一个互换
arr[left]=arr[right];
arr[right]=temp;
right--;
left++;
}
}
voiditob(intnum,chars[],intb)
{
inti=0;
while(num)
{
if(b<10)
{
s[i]=num%b+'0';//得到int型
num/=b;//用模除的方法依次得到每位进制数
i++;
}
elseif(b==16)
{
s[i]="0123456789abcdef"[num%16];
num/=16;
i++;
}
else
{
break;
}
}
s[i]='\0';
reverse(i,s);
}
intmain()
{
chars[32];
intb=0;
scanf("%d",&b);
itob(255,s,b);//此时进制b可以任意输入
printf("%s\n",s);
return0;
}
C语言 定义函数妇女 判定整数n 【详解】C语言:编写一个函数itob(int n char s[] int b) 将整数n转换为以b进制的数。保存到s中。...