题目描述:
- 写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。
- 数据范围:保证结果在1≤n≤2^31−1
- 输入描述:输入一个十六进制的数值字符串。
- 输出描述:输出该数值的十进制字符串。不同组的测试用例用\n隔开。
示例:
输入:0xAA
输出:170
思路:
最低位乘以16的零次幂,依次每一位乘以16的1次幂,2次幂,一直到最高
具体实现:
#include <stdio.h>
int main()
{
int d=0,bw=1,i=0;
char c;
int b[50]={0};
printf("输入一个十六进制数\n");
while(scanf("%c",&c)!=EOF)
{
if(c=='\n')
continue;
if(c>=65&&c<=70)
b[i++]=c+10-'A';
else
b[i++]=c-'0';
}
for(i=i-1;i>=0;i--)
{
d+=b[i]*bw;
bw=bw+16;
}
printf("%d\n",d);
return 0;
}