当前位置:   article > 正文

蓝桥杯 BASIC-11 十六进制转十进制_c语言蓝桥杯题目:从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的

c语言蓝桥杯题目:从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的

问题描述

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

样例输入

FFFF

样例输出

65535

题意:给定一个十六进制的数,转化成十进制的数输出。

思路:用求得的已知数*16+每位上的值,是求十进制一种简单方法。不用从尾部开始求起。

注意:这里的数超过int,所有最后的十进制数要用long long int存储,long也会错误。

代码:

  1. #include <iostream>
  2. #include<string>
  3. using namespace std;
  4. int main(int argc, char** argv) {
  5. string s;
  6. long long int num = 0;//注意不能用int或者long存储,否则会错误。用long long int保存数值
  7. cin>>s;
  8. for(int i=0;i<s.size();i++){//已求的前面的数num*16+每位对应的数字,全部加起来即是十进制的数,不用从尾部开始
  9. if(s[i]>='0'&&s[i]<='9'){//要判断每位数是0-9还是A-F,转化位对应的数
  10. num = num*16+(s[i]-'0');
  11. }else if(s[i]>='A'&&s[i]<='F'){
  12. num = num*16+(s[i]-'A'+10);
  13. }
  14. }
  15. cout<<num<<endl;
  16. return 0;
  17. }

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/244567
推荐阅读
相关标签
  

闽ICP备14008679号