题目描述
写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。
数据范围:
1 <=n <= 2 31 -1
输入描述:
输入一个十六进制的数值字符串
输出描述:
输出该数值的十进制字符串。不同组的测试用例用\n隔开。
示例
输入:
0xAA
输出:
170
思路
获取字符串长度,对其遍历,按照每个数组元素的位置乘16的幂次,要注意ASCII码和16进制各个数所代表的值之间的转化。
具体实现
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<math.h>
int main()
{
int k;
int sum = 0;
char a[100];
gets(a);
int len = strlen(a);
for (int i = 2; i < len; i++)
{
int c = a[i];
if (c >= 65 && c <= 70)
k = c - 55;
else
k = c - 48;
sum = sum +k* pow(16, len - i-1);
}
printf("%d", sum);
}
小结
用到幂次函数,调用math.h头文件,用的pow函数,16的幂次要搞清楚,每个字符与值之间的转化要搞懂。