zoukankan      html  css  js  c++  java
  • "蓝桥杯“基础练习: 十六进制转十进制

    问题描述
      从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
      注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
    样例输入
    FFFF
    样例输出
    65535


    心得:

    本题也有陷阱,也是出在数据范围上,不超过8位的十六进制数,FFFFFFFF这个数就不行,所以计算16次方的那个函数返回值要用long long类型的。

    代码:

    #include <iostream>
    #include <string>
    #include <algorithm>
    using namespace std;
    
    long long mul(int n)//要用long long类型
    {
        long long s=1;
        for(int i=1;i<=n;i++)
            s*=16;
        return s;
    }
    
    int main()
    {
        long long a=0;
        string str;
        cin>>str;
        reverse(str.begin(),str.end());
        for(int i=0;i<str.length();++i)
        {
            int temp;
            if(str[i]>='0'&&str[i]<='9')
                temp=str[i]-'0';
            else
                temp=str[i]-55;
            a+=(temp*mul(i));
        }
        cout<<a;
        return 0;
    }
    

    运行:


  • 相关阅读:
    XML相关知识点
    MLPlatform开发日志
    1.0 es6 箭头函数
    基本数学概念
    4.4 thymeleaf使用补充
    vim操作手册
    eclise创建后台项目
    正则表达式
    数据库隔离级别
    1. gradle的使用教程
  • 原文地址:https://www.cnblogs.com/sr1993/p/3697805.html
Copyright © 2011-2022 走看看