BASIC-11 十六进制转十进制

/*

问题描述

  从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。

  注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。

样例输入

FFFF

样例输出

65535

*/

/*

#include <stdio.h>

int main(void)
{  
   long long a ;
   scanf(“%X”,&a);
   printf(“%lld\n”,a);
   return 0;
}

*/

#include<stdio.h>

#include<string.h>  

long long cf(int );

int main(void)

{

    char a[8] ;

    int t;

    scanf(“%s”,a);

    int i = 0 ;

    int cd;

    cd = strlen(a);

    long long s = 0 ;

    do

    {

        switch (a[i])

        {

            case ‘A’: t = 10 ;

            break ;

            case ‘B’: t = 11 ;

            break ;

            case ‘C’: t = 12 ;

            break ;

            case ‘D’: t = 13 ;

            break ;

            case ‘E’: t = 14 ;

            break ;

            case ‘F’: t = 15 ;

            break ;

            default :

            t = a[i] – ‘0’ ;

            break ;

        }

        s +=  cf(cd-i-1) * t;

        i ++ ;

    }

    while( a[i] != ‘\0’);

    printf(“%lld”,s);

    return 0;

}

long long cf(int m)

{

    long long j = 1;

    while( m > 0 )

    {

        j *= 16;

        m –;

    }

    return j;

}

    原文作者:进制转换
    原文地址: https://blog.csdn.net/y895315416/article/details/78830475
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞