您的位置:首页 > 编程语言 > C语言/C++

C++之从头开始(8)二进制、十进制的转化

2013-11-23 12:55 232 查看
输入两个正整数,然后转换成二进制。。

并且相加~比如25+26的二进制就是00110011(显示出来),然后在转换成10进制,就是51拉~

不说啥了~开始连我也看不懂自己写的程序了~。。。。

main()

{ int a[100],b[100],c[100],k,n,i,j,z,d=0,t=1;

printf("shuru liang ge zhengshu :");

printf("a=");

scanf("%d",&k);

printf("b=");

scanf("%d",&n);

for(i=0;i<8;i++) /*把k和n转换成二进制,比如25为00011001,26为00011010,在把他们分别

{j=k%2;z=n%2; 放在a[]和b[]的数组内,我是不是很聪明呀?:)*/

a[i]=j;b[i]=z;

k=k/2;n=n/2;

}

for(i=0;i<8;i++) /*本程序最精华的部分,通常把K和N的二进制相加,非常感谢亡灵天灾的一位朋

{ c[i]=a[i]+b[i]+c[i]; 友的帮助*/

if(c[i]==2) {c[i]=0;a[i+1]++;}

if(c[i]==3) {c[i]=1;a[i+1]++;}

}

for(i=7;i>=0;i--) /*很明显,这个是要把二进制换成十进制的*/

printf("%d",c[i]);

printf("\\n");

for(i=0;i<=7;i++)

{d=d+c[i]*t;

t*=2;

}

printf("%d",d);

getch();



输入一个十进数,将其转换成N进制数

比如你输入120,然后在输入8(进制),那就是120转换成8进制拉,就输出170,如果输入140,然后换成16进制,那就是8C~~嗷嗷~花了1个小时把16进制给换过来了~哎,一个小失误,就拐了N个弯

最后又回到原来的想法上了~然后就解决~~^.^~

main()

{ int n,k,i,t=0;

int a[100];

printf("shuru yi ge 10 jinzhi de shu:");

scanf("%d",&k);

printf("shuru yao zhuanhua ? jinzhi:");

scanf("%d",&n);

do

{i=k%n;a[++t]=i;k=k/n;}

while(k!=0);

for(;t>0;t--)

{ switch(a[t])

{case 15:printf("F");break;

case 14:printf("E");break;

case 13:printf("D");break;

case 12:printf("C");break;

case 11:printf("B");break;

case 10:printf("A");break;

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

}

}

getch();

}

其实这程序也可以换成3进制,4进制……只要不超过16就行,还有要大于0..
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: