基础练习 十六进制转十进制

来源:互联网 发布:网络机柜42u 编辑:程序博客网 时间:2024/06/05 21:01
问题描述
  从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
  注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
样例输入
FFFF
样例输出
65535

思路:
        设十六进制位数为n,十六进制的第i位乘以10的n - i次方。使用函数pow比较简单。pow函数包含在头文件cmath(C中是math.h)中,c++中提供很多种pow的重载形式,T pow( T x,T y )表示x的y次方,T可以为int、double、float、long double。

#include<cstdio>#include<cmath>#include<cstring>int main(){    int len, i, t;    long long int N = 0;    char w[8];    gets(w);    len = strlen(w);    for(i = 0; w[i] != '\0'; i++)    {        switch(w[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 = w[i] - '0'; break;        }        N = N + t * pow(16, len - 1 - i);    }     printf("%I64d\n", N);    return 0;} 




      
0 0
原创粉丝点击