fuyang 发表于 2009-6-16 08:59:45

进制转换程序代码

#include<math.h>
#include<fstream.h>
#include<iostream.h>
#include<stdio.h>
#include<string.h>
void main()
{

int form,num;

char word;
s1:cout<<"你输入的数制是(阿拉伯字母,10或2或8或16):"<<endl;

cin>>form;

if(form!=2&&form!=10&&form!=8&&form!=16)

{


cout<<"err"<<endl;


goto s1;

}

else

{


cout<<"输入数的位数为:"<<endl;


cin>>num;


cout<<"请输入需要处理的数:"<<endl;


cin>>word;

}

char quan;

int sum=0;

int g;

strcpy(quan,word);

for(int x=0;x<num;x++)

{


if (quan<='9'&&quan>='0')


quan=quan-48;


if (quan<='F'&&quan>='A')


quan=quan-55;

}

//开始转换成十进制数

for( int a=0;a<num;a++)

{


g=(int) pow(form,(num-1-a));


sum=sum+(quan)*g;

}

cout<<"该数的十进制形式为:"<<sum<<"D"<<endl;

//计算该数的十进制数形式

char yushu2;

int p=0;

p=sum;//开始转换成2进制数

int b;

for(int j=0;j<100&&sum!=0;j++,sum=sum/2)

{


yushu2=(char)(sum%2+48);


yushu2='\0';

}

int m=strlen(yushu2);

cout<<"该数的二进制数形式为:";

for(b=m-1;b>=0;b--)

{


cout<<yushu2;} //计算该数的二进制数形式

cout<<"B"<<endl;

char yushu8;

int q=0;

q=p;


int d;//开始转换成8进制数

for(int c=0;c<100&&p!=0;c++,p=p/8)

{


yushu8=(char)(p%8+48);


yushu8='\0';

}

int n=strlen(yushu8);

cout<<"该数的八进制数形式为:";

for(d=n-1;d>=0;d--)

{


cout<<yushu8;}

cout<<"Q"<<endl;

char yushu16;

int r=q;//开始转换成16进制数

for(int e=0;e<100&&q!=0;e++,q=q/16)

{

if (q%16<=9&&q%16>=0)

yushu16=(char)(q%16+48);

if (q%16<=15&&q%16>=10)

yushu16=(char)(q%16+55);

yushu16='\0';
      

}

int o=strlen(yushu16);

cout<<"该数的十六进制数形式为:";

for(int f=o-1;f>=0;f--)

{

cout<<yushu16;

}

cout<<"H"<<endl;

// return 0;

}

pc8888 发表于 2009-6-16 13:14:17

一点都不懂!看来还要多加学习啊

axin 发表于 2009-6-17 11:02:07

看不懂!
c不好!
得学习啊!

剌愙 发表于 2009-7-2 21:25:14

我是菜鸟,看不懂你的资料,希望师傅你下次能有点解释好吗。。。。

emily 发表于 2009-7-6 13:23:09

能否告知一下代码的算法啊。
页: [1]
查看完整版本: 进制转换程序代码