算法练习DAY9——HJ5 进制转换

216 阅读1分钟

题目描述:

  • 写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。
  • 数据范围:保证结果在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;
}