关于C++写的十六进制转化成十进制的程序

来源:百度知道 编辑:UC知道 时间:2024/05/15 06:52:36
下面是我写的C++十六进制转化成十进制的程序,高手看看
#include<iostream.h>
#include<string.h>
double transform()
{int i,j,pow=1;
double DEC=0;
char HEX[100];
cout<<"请输入一个十六进制数"<<endl;
loop:
{cin>>HEX;
j=strlen(HEX);
}
for(i=j;i>0;)
{i--;
if ((HEX[i]>='0') && (HEX[i]<='9'))
HEX[i]=HEX[i]-'0';
else if ((HEX[i]>='A') && (HEX[i]<='F'))
HEX[i]=HEX[i]-'A'+10;
else if ((HEX[i]>='a') && (HEX[i]<='f'))
HEX[i]=HEX[i]-'a'+10;
else
{cout<<"你的输入不合法,请重新输入"<<endl;
goto loop;}
}
for(i=j;i>0;)
{i--;
DEC=DEC+HEX[i]*pow;
pow=pow*16;}
cout<<"该十六进制数转化为十进制数为"<<DEC<<endl;
return 0;
}

int main()
{
transform();
return 0;
}

这个程序实现了无论多少位以及输入字符的合法性判断两

#include<iostream.h>
#include<string.h>
double transform()
{
int i,j,pow=1;
int dot=-1; //记录小数点位置
double DEC=0,fpow;
char HEX[100];
cout<<"请输入一个十六进制数"<<endl;
loop:
cin>>HEX;
j=strlen(HEX);
for(i=j;i>0;)
{
i--;
if ((HEX[i]>='0') && (HEX[i]<='9')) HEX[i]=HEX[i]-'0';
else if((HEX[i]>='A') && (HEX[i]<='F')) HEX[i]=HEX[i]-'A'+10;
else if((HEX[i]>='a') && (HEX[i]<='f')) HEX[i]=HEX[i]-'a'+10;
else if(HEX[i]=='.') dot=i; //找到小数点
else
{
cout<<"你的输入不合法,请重新输入"<<endl;
goto loop;
}
}
if(dot!=-1) //当dot的值不等于-1 表示有小数点此时dot的值是小数点的位置
{
for(i=dot;i>0;) //小数点前部分 用你的方法
{
i--;
DEC=DEC+HEX[i]*pow;
pow=pow*16;

}