您的位置:首页 > 其它

BASIC-11 十六进制转十进制

2017-12-18 10:30 267 查看
/*

问题描述

  从键盘输入一个不超过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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: