二进制八进制十进制十六进制互相转化的C语言源代码.docx

上传人:b****3 文档编号:27008791 上传时间:2023-06-25 格式:DOCX 页数:26 大小:16.24KB
下载 相关 举报
二进制八进制十进制十六进制互相转化的C语言源代码.docx_第1页
第1页 / 共26页
二进制八进制十进制十六进制互相转化的C语言源代码.docx_第2页
第2页 / 共26页
二进制八进制十进制十六进制互相转化的C语言源代码.docx_第3页
第3页 / 共26页
二进制八进制十进制十六进制互相转化的C语言源代码.docx_第4页
第4页 / 共26页
二进制八进制十进制十六进制互相转化的C语言源代码.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

二进制八进制十进制十六进制互相转化的C语言源代码.docx

《二进制八进制十进制十六进制互相转化的C语言源代码.docx》由会员分享,可在线阅读,更多相关《二进制八进制十进制十六进制互相转化的C语言源代码.docx(26页珍藏版)》请在冰豆网上搜索。

二进制八进制十进制十六进制互相转化的C语言源代码.docx

二进制八进制十进制十六进制互相转化的C语言源代码

#include

#include

#include

voidD_B(int);

voidD_O(int);

voidD_X(int);

voidB_D(int);

voidB_O(int);

voidB_X(int);

voidO_B(int);

voidO_D(int);

voidO_X(int);

voidX_B(charr[],intk);

voidX_D(charr[],intk);

voidX_O(charr[],intk);

voidmain()

{

inti,j,k=0;

intq;

charr[10];

printf("+=============================================================+\n");

printf("|欢迎使用进制转换程序|\n");

printf("+=============================================================+\n");

printf("注:

本版本只做正整数的进制转换!

");

do

{

q=0;

//fflush(stdin);

printf("\n请选择需要被转换的进制:

\n0、退出\n1、二进制\n2、八进制\n3、十进制\n4、十六进制\n");

scanf("%d",&i);

switch(i)

{

case1:

printf("\n请选择转换后的进制:

\n0、退出\n1、二进制\n2、八进制\n3、十进制\n4、十六进制\n");

scanf("%d",&j);

switch(j)

{

case1:

printf("\n同进制之间不用转化!

\n");

q=1;

break;

case2:

printf("\n请输入您想要转化的数:

");

scanf("%d",&k);

B_O(k);

q=1;

break;

case3:

printf("\n请输入您想要转化的数:

");

scanf("%d",&k);

B_D(k);

q=1;

break;

case4:

printf("\n请输入您想要转化的数:

");

scanf("%d",&k);

B_X(k);

q=1;

break;

case0:

printf("谢谢使用!

");

}

break;

case2:

printf("\n请选择转换后的进制:

\n0、退出\n1、二进制\n2、八进制\n3、十进制\n4、十六进制\n");

scanf("%d",&j);

switch(j)

{

case2:

printf("\n同进制之间不用转化!

\n");

q=1;

break;

case1:

printf("\n请输入您想要转化的数:

");

scanf("%d",&k);

O_B(k);

q=1;

break;

case3:

printf("\n请输入您想要转化的数:

");

scanf("%d",&k);

O_D(k);

q=1;

break;

case4:

printf("\n请输入您想要转化的数:

");

scanf("%d",&k);

O_X(k);

q=1;

break;

case0:

printf("谢谢使用!

");

}

break;

case3:

printf("\n请选择转换后的进制:

\n0、退出\n1、二进制\n2、八进制\n3、十进制\n4、十六进制\n");

scanf("%d",&j);

switch(j)

{

case3:

printf("\n同进制之间不用转化!

\n");

q=1;

break;

case1:

printf("\n请输入您想要转化的数:

");

scanf("%d",&k);

D_B(k);

q=1;

break;

case2:

printf("\n请输入您想要转化的数:

");

scanf("%d",&k);

D_O(k);

q=1;

break;

case4:

printf("\n请输入您想要转化的数:

");

scanf("%d",&k);

D_X(k);

q=1;

break;

case0:

printf("谢谢使用!

");

}

break;

case4:

printf("\n请选择转换后的进制:

\n0、退出\n1、二进制\n2、八进制\n3、十进制\n4、十六进制\n");

scanf("%d",&j);

switch(j)

{

case4:

printf("\n同进制之间不用转化!

\n");

q=1;

break;

case1:

printf("\n请输入您想要转化的数:

");

fflush(stdin);

gets(r);

for(k=0;;k++)

{

if(r[k]=='\0')

break;

}

X_B(r,k);

q=1;

break;

case2:

printf("\n请输入您想要转化的数:

");

fflush(stdin);

gets(r);

for(k=0;;k++)

{

if(r[k]=='\0')

break;

}

X_O(r,k);

q=1;

break;

case3:

printf("\n请输入您想要转化的数:

");

fflush(stdin);

gets(r);

for(k=0;;k++)

{

if(r[k]=='\0')

break;

}

X_D(r,k);

q=1;

break;

case0:

printf("谢谢使用!

");

}

break;

case0:

printf("\n谢谢使用!

\n");

}

}while(q==1);

}

///////以下为:

二进制转换为十进制,八进制,十六进制.

voidB_D(inta)

{

inti,s=0;

intresult=0;

for(i=1;a!

=0;i*=2)

{

if(a%10>1)

{

s=1;

break;

}

else

{

result+=(a%10)*i;

a=a/10;

}

}

if(s==1)

printf("您的输入有误!

请重新输入\n");

else

printf("\n转换后的数为:

%d\n",result);

}

voidB_O(inta)

{

inti,j,k,s=0;

intp[30];

intresult=0;

for(i=1;a!

=0;i*=2)

{

if(a%10>1)

{

s=1;

break;

}

else

{

result+=(a%10)*i;

a=a/10;

}

}

for(j=0;result!

=0;j++)

{

p[j]=result%8;

result=result/8;

}

if(s==1)

printf("您的输入有误!

请重新输入\n");

else

{

printf("\n转换后的数为:

");

for(k=j-1;k>=0;k--)

{

printf("%d",p[k]);

}

printf("\n");

}

}

voidB_X(inta)

{

inti,j,k,s=0;

charp[30];

intresult=0;

for(i=1;a!

=0;i*=2)

{

if(a%10>1)

{

s=1;

break;

}

else

{

result+=(a%10)*i;

a=a/10;

}

}

for(j=0;result!

=0;j++)

{

p[j]=result%16;

result=result/16;

if(p[j]>10)

{

switch(p[j])

{

case10:

p[j]='A';

break;

case11:

p[j]='B';

break;

case12:

p[j]='C';

break;

case13:

p[j]='D';

break;

case14:

p[j]='E';

break;

case15:

p[j]='F';

break;

}

}

elsep[j]+=48;

}

if(s==1)

printf("您的输入有误!

请重新输入\n");

else

{

printf("\n转换后的数为:

");

for(k=j-1;k>=0;k--)

{

printf("%c",p[k]);

}

printf("\n");

}

}

///////以下为:

八进制转换为二进制,十进制,十六进制.

voidO_B(inta)

{

inti,j,k,s=0;

intresult=0;

intp[30];

for(i=1;a!

=0;i*=8)

{if(a%10>7)

{

s=1;

break;

}

else

{

result+=(a%10)*i;

a=a/10;

}

}

for(j=0;result!

=0;j++)

{

p[j]=result%2;

result=result/2;

}

if(s==1)

printf("您的输入有误!

请重新输入\n");

else

{

printf("\n转换后的数为:

");

for(k=j-1;k>=0;k--)

{

printf("%d",p[k]);

}

printf("\n");

}

}

voidO_D(inta)

{

inti,s=0;

intresult=0;

for(i=1;a!

=0;i*=8)

{

if(a%10>7)

{

s=1;

break;

}

else

{

result+=(a%10)*i;

a=a/10;

}

}

if(s==1)

printf("您的输入有误!

请重新输入\n");

else

{

printf("\n转换后的数为:

%d\n",result);

}

}

voidO_X(inta)

{

inti,j,k,s=0;

charp[30];

intresult=0;

for(i=1;a!

=0;i*=8)

{

if(a%10>7)

{

s=1;

break;

}

else

{

result+=(a%10)*i;

a=a/10;

}

}

for(j=0;result!

=0;j++)

{

p[j]=result%16;

result=result/16;

if(p[j]<10)

p[j]+=48;

else

{

switch(p[j])

{

case10:

p[j]='A';

break;

case11:

p[j]='B';

break;

case12:

p[j]='C';

break;

case13:

p[j]='D';

break;

case14:

p[j]='E';

break;

case15:

p[j]='F';

break;

}

}

}

if(s==1)

printf("您的输入有误!

请重新输入\n");

else

{

printf("\n转换后的数为:

");

for(k=j-1;k>=0;k--)

{

printf("%c",p[k]);

}

printf("\n");

}

}

///////以下为:

十六进制转换为十进制,二进制,八进制.

voidX_D(chara[],intk)

{

inti,j,s=0;

intresult=0;

intb[50];

for(i=0;i

{

if(a[i]<='9'&&a[i]>='1')

{b[i]=a[i]-48;

}

else

{

switch(a[i])

{

case'A':

b[i]=10;

break;

case'B':

b[i]=11;

break;

case'C':

b[i]=12;

break;

case'D':

b[i]=13;

break;

case'E':

b[i]=14;

break;

case'F':

b[i]=15;

break;

case'a':

b[i]=10;

break;

case'b':

b[i]=11;

break;

case'c':

b[i]=12;

break;

case'd':

b[i]=13;

break;

case'e':

b[i]=14;

break;

case'f':

b[i]=15;

break;

default:

s=1;

}

}

}

for(i=1,j=k-1;j>=0;j--,i*=16)

{

result+=b[j]*i;

}

if(s==1)

printf("您的输入有误!

请重新输入\n");

else

{

printf("\n转换后的数为:

%d",result);

}

}

voidX_B(chara[],intk)

{

inti,j,s=0;

intresult=0;

intb[50];

intp[30];

for(i=0;i

{

if(a[i]<='9'&&a[i]>='1')

b[i]=a[i]-48;

else

{

switch(a[i])

{

case'A':

b[i]=10;

break;

case'B':

b[i]=11;

break;

case'C':

b[i]=12;

break;

case'D':

b[i]=13;

break;

case'E':

b[i]=14;

break;

case'F':

b[i]=15;

break;

case'a':

b[i]=10;

break;

case'b':

b[i]=11;

break;

case'c':

b[i]=12;

break;

case'd':

b[i]=13;

break;

case'e':

b[i]=14;

break;

case'f':

b[i]=15;

break;

default:

s=1;

}

}

}

for(j=k-1,i=1;j>=0;j--,i*=16)

{

result+=b[j]*i;

}

for(j=0;result!

=0;j++)

{

p[j]=result%2;

result=result/2;

}

if(s==1)

printf("您的输入有误!

请重新输入\n");

else

{

printf("\n转换后的数为:

");

for(k=j-1;k>=0;k--)

{

printf("%d",p[k]);

}

printf("\n");

}

}

voidX_O(chara[],intk)

{

inti,j,s=0;

intresult=0;

intb[30];

intp[30];

for(i=0;i

{

if(a[i]<='9'&&a[i]>='1')

b[i]=a[i]-48;

else

{

switch(a[i])

{

case'A':

b[i]=10;

break;

case'B':

b[i]=11;

break;

case'C':

b[i]=12;

break;

case'D':

b[i]=13;

break;

case'E':

b[i]=14;

break;

case'F':

b[i]=15;

break;

case'a':

b[i]=10;

break;

case'b':

b[i]=11;

break;

case'c':

b[i]=12;

break;

case'd':

b[i]=13;

break;

case'e':

b[i]=14;

break;

case'f':

b[i]=15;

break;

default:

s=1;

}

}

}

for(j=k-1,i=1;j>=0;j--,i*=16)

{

result+=b[j]*i;

}

for(j=0;result!

=0;j++)

{

p[j]=result%8;

result=result/8;

}

if(s==1)

printf("您的输入有误!

请重新输入\n");

else

{

printf("\n转换后的数为:

");

for(k=j-1;k>=0;k--)

{

printf("%d",p[k]);

}

printf("\n");

}

}

///////以下为:

十进制转换为二进制,八进制,十六进制.

voidD_B(inta)

{

intj,k;

intp[30];

for(j=0;a!

=0;j++)

{

p[j]=a%2;

a=a/2;

}

printf("\n转换后的数为:

");

for(k=j-1;k>=0;k--)

{

printf("%d",p[k]);

}

printf("\n");

}

voidD_O(inta)

{

intj,k;

intp[30];

for(j=0;a!

=0;j++)

{

p[j]=a%8;

a=a/8;

}

printf("\n转换后的数为:

");

for(k=j-1;k>=0;k--)

{

printf("%d",p[k]);

}

printf("\n");

}

voidD_X(inta)

{

intj,k;

intp[30];

for(j=0;a!

=0;j++)

{

p[j]=a%16;

a=a/16;

if(p[j]<10)

p[j]+=48;

else

{

switch(p[j])

{

case10:

p[j]='A';

break;

case11:

p[j]='B';

break;

case12:

p[j]='C';

break;

case13:

p[j]='D';

break;

case14:

p[j]='E';

break;

case15:

p[j]='F';

break;

}

}

}

printf("\n转换后的数为:

");

for(k=j-1;k>=0;k--)

{

printf("%c",p[k]);

}

printf("\n");

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 计算机软件及应用

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1