当前位置:   article > 正文

【蓝桥杯 C++】试题 基础练习 十六进制转十进制(进制转换二)_c++第2题 十六进制

c++第2题 十六进制

资源限制

时间限制:1.0s 内存限制:512.0MB

———————————————————————————————————————————

问题描述

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

———————————————————————————————————————————

样例输入

FFFF

———————————————————————————————————————————

样例输出

65535

十六进制转换成十进制,总体思路就是依次对每一个字符进行处理,加到一起就可以了。问题就在于需要知道每一个字符对应十六进制的哪一位。

这些工作都做完了,细心的朋友会发现,有些样例无法通过,关键就在题目标红的部分,不超过八位十六进制,如果用来存储答案的是int类型的话,输入样例FFFFFFFF,答案是错误的,因为FFFFFFFF对应的十进制数是4294967295大于了int的范围,所以以答案所需要使用的数据类型是长整数类型。

代码如下:

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int main()
  4. {
  5. string s;
  6. cin >> s;
  7. {
  8. long long i,c = 1,sum = 0,tmp;
  9. for(i = 1; s[i] != '\0'; i++)//计算总共有几位十六进制数;
  10. {
  11. c *= 16;
  12. }
  13. for(int j = 0; s[j] != '\0'; j++)//从最高位开始计算;
  14. {
  15. switch(s[j])
  16. {
  17. case '0':
  18. break;
  19. case '1':
  20. sum += c;
  21. break;
  22. case '2':
  23. tmp = 2*c;
  24. sum += tmp;
  25. break;
  26. case'3':
  27. tmp = 3*c;
  28. sum += tmp;
  29. break;
  30. case'4':
  31. tmp = 4*c;
  32. sum += tmp;
  33. break;
  34. case'5':
  35. tmp = 5*c;
  36. sum += tmp;
  37. break;
  38. case'6':
  39. tmp = 6*c;
  40. sum += tmp;
  41. break;
  42. case'7':
  43. tmp = 7*c;
  44. sum += tmp;
  45. break;
  46. case'8':
  47. tmp = 8*c;
  48. sum += tmp;
  49. break;
  50. case'9':
  51. tmp = 9*c;
  52. sum += tmp;
  53. break;
  54. case'A':
  55. tmp = 10*c;
  56. sum += tmp;
  57. break;
  58. case'B':
  59. tmp = 11*c;
  60. sum += tmp;
  61. break;
  62. case'C':
  63. tmp = 12*c;
  64. sum += tmp;
  65. break;
  66. case'D':
  67. tmp = 13*c;
  68. sum += tmp;
  69. break;
  70. case'E':
  71. tmp = 14*c;
  72. sum += tmp;
  73. break;
  74. case'F':
  75. tmp = 15*c;
  76. sum += tmp;
  77. break;
  78. default:
  79. break;
  80. }
  81. c = c/16;//计算完成后,向后移动一位;
  82. }
  83. cout << sum << endl;
  84. }
  85. return 0;
  86. }

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

闽ICP备14008679号