题目
从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
分析:
- 将十六进制是转换为十进制
- 再将十进制转换为八进制
十六进制到十进制的转换代码:
int Sixteen_Ten(char *p)
{
int k =0;
int i =0;
int sum=0;
int len = strlen(p);
for(i = len-1;i >= 0;i--)
{
if(p[i] >= 'A' && p[i] <= 'F')
{
sum += (p[i] - 'A'+10)*(int)pow(16*1.0,k++*1.0); //double pow( double x, double y );
}
else
{
sum += (p[i] - '0')*(int)pow(16*1.0,k++*1.0);
}
}
return sum;
}
将十进制转换为八进制代码如下:
void Ten_Eight(int num)
{
int ret[99] = {0};
int i=0;
int k = 0;
while(num)
{
ret[k++] = num%8;
num /= 8;
}
PrintNum(ret,k-1);
}
输出函数:
void PrintNum(int *ret,int len)
{
int i =0;
printf("转化的八进制数为:");
for(i = len;i >= 0;i--)
{
printf("%d",ret[i]);
}
printf("\n");
}
完整代码呈上:
测试结果呈上: