#includestdio.h
成都创新互联公司主营华池网站建设的网络公司,主营网站建设方案,APP应用开发,华池h5小程序开发搭建,华池网站营销推广欢迎华池等地区企业咨询
#define n 20
void change2(int t)
{ //将十进制数转换到存放二进制的数组中
int i;
int b[n]={0};
for(i=0;i20;i++)
{
b[i]=t%2;
t=t/2;
}
for(i=n-1;i=0;i--)
{
printf("%d",b[i]);
}
printf("\n");
}
void main(){
int demo;
printf("请输入一个十进制数:");
scanf("%d",demo);
change2(demo);
}
void change(){
int n;//n就是你要转换的十进制数
char ch[10]={'\0'};
while(i10){
if(n%16==0)
ch[i]=0;
else
ch[i]=n%16;
i++;
}
int len=char.length();
for(int i=len-1;i=0;i--)
sprintf("%c",ch[i]);
}
这个是
递归程序
,程序的意思就是:
十进制转化为2进制,利用辗转除以2取
余数
的
方式
,这个网上有很多,其他比如十进制转
十六进制
也是这个方式,只不过辗转除以16,直到本身变为0,每次相除的余数最后组合成要转换的结果。PKU-一夫
#includestdio.h
void f(int n)
{
if(n) f(n/2);
else return;
printf("%d",n%2);
}
int main()
{
int n;
while(1)
{
scanf("%d",n);
if(n0) break;
if(n==0) printf("0");
f(n);
printf("\n");
}
return 0;
}
#include "stdafx.h"
#include stdlib.h
#include stdio.h
#include string.h
int converN(int p,int m, int n);
int conver10(char *pold, int m);
int power(int m, int pow);
int main( )
{
int old,fresh,oldv=0;
char cold[100];
printf("输入的数制不能超过16,按q退出,按回车继续。");
while(getchar() != 'q')
{
printf("请输入原数制:");
scanf("%d",old);
printf("请输入新数制:");
scanf("%d",fresh);
printf("请输入要转换数字:");
scanf("%s",cold);
printf("转换后数字为:");
converN(conver10(cold, old),old,fresh);
putchar('\n');
printf("输入的数制不能超过16,按q退出,按回车继续。");
while(getchar() != '\n')
continue;
}
return 1;
}
int power(int m, int pow)
{
if(pow == 0)
return 1;
if(pow 0)
return m*power(m,pow-1);
}
int conver10(char *pold, int m)
{
int len = strlen(pold);
int res=0;
for(int i=0; ilen; i++)
{
switch(tolower(pold[i]))
{
case 'a':
res += (pold[i]-'a'+10) * power(m,len-i-1);
break;
case 'b':
res += (pold[i]-'a'+10) * power(m,len-i-1);
break;
case 'c':
res += (pold[i]-'a'+10) * power(m,len-i-1);
break;
case 'd':
res += (pold[i]-'a'+10) * power(m,len-i-1);
break;
case 'e':
res += (pold[i]-'a'+10) * power(m,len-i-1);
break;
case 'f':
res += (pold[i]-'a'+10) * power(m,len-i-1);
break;
default:
res += (pold[i]-'0') * power(m,len-i-1);
}
}
return res;
}
int converN(int p,int m, int n)
{
int i=0;
if(p/n != 0)
converN(p/n,m,n);
if((i=p%n) 10)
putchar('0' + i);
else
putchar('a' + i - 10);
return 1;
}