华为机试每日一练--第五题: 进制转换

简介: 写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。数据范围:保证结果在 1≤n≤2^31−1

练习题入口

问题描述

写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。


数据范围:保证结果在 1≤n≤2^31−1


输入描述:

输入一个十六进制的数值字符串。


输出描述:

输出该数值的十进制字符串。不同组的测试用例用\n隔开。

5b80b63e64ecb7a191190f4265d52603_watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5aiB5aiB5rKB5rKB,size_20,color_FFFFFF,t_70,g_se,x_16.png

解题分析

  本道题是十六进制转换传成十进制,所以会出现“ABCDEF”等字符来表示数字,现在难点就是如何把字符转换成数字?

我们可以查看以下ASCII表

image.png

 发现“A”的ASCII码为65,又因为A在十六进制中表示数字10,所以我们用字符'A'-15就能得到数字10啦。同理,其他字符也是如此。


  接下来就是进制转换的问题了,‘十六进制’转‘十进制’就是把‘十六进制’数按权展开、相加即得十进制数。 (十六进制为Hexadecimal,简写为H)

182c96c989df74e6ed5c33874614c64f_watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5aiB5aiB5rKB5rKB,size_20,color_FFFFFF,t_70,g_se,x_16.png

   所以我们要从字符串尾部获取字符,直到找到字符‘x’(0x是16进制表示方法所以不计入中长度内)。


   我们可以用数组获取整个字符串并求取数组长度len,然后从字符串末尾向前访问,直到访问字符‘x’停止。在循环过程中,我们用pow函数计算16的幂次方,循环从数组下标[len-1]循环到[2],每次循环16的幂就+1。


(大家如果不知道进制转换的可以参考这篇:超详细进制转换详解)

代码实现

#include
#include
int main()
{
  char str[100];
  scanf("%s", str);
  int len = strlen(str);
  int sum = 0;
  for (int i = len - 1; i > 1; i--)
  {
  int ret;
  if (str[i] >= 65)
  {
    ret = str[i] - 55;
  }
  else {
    ret = str[i] - 48;
  }
  sum += ret * pow(16, len - i - 1);
  }
  printf("%d", sum);
  return 0;
}
相关文章
|
5天前
|
存储 编译器 C语言
【C语言刷题每日一题#牛客网BC107】矩阵转置
【C语言刷题每日一题#牛客网BC107】矩阵转置
|
1月前
|
算法
刷题专栏(三):二进制求和
刷题专栏(三):二进制求和
43 0
|
存储 算法 C语言
【C语言蓝桥杯每日一题】——数字三角形
数字三角形🙌 题目描述 上图给出了一个数字三角形。从三角形的顶部到底部有很多条不同的路径。对于每条路径,把路径上面的数加起来可以得到一个和,你的任务就是找到最大的和。路径上的每一步只能从一个数走到下一层和它最近的左边的那个数或者右 边的那个数。此外,向左下走的次数与向右下走的次数相差不能超过 1。
107 0
【C语言蓝桥杯每日一题】——数字三角形
|
算法 C语言 C++
【C语言蓝桥杯每日一题】——等差数列
这道题,我用到了C语言中的qsort库函数,它是一种基于快排算法思想的排序函数。首先,想让大家认识一下qsort库函数的大概样子,和如何使用。
131 0
|
算法 C语言 C++
【C语言蓝桥杯每日一题】—— 既约分数
哈喽各位友友们😊,我今天又学到了很多有趣的知识,现在迫不及待的想和大家分享一下!😘我仅已此文,和大家分享【C语言蓝桥杯每日一题】—— 既约分数~ 都是精华内容,可不要错过哟!!!😍😍😍
73 0
华为机试每日一练--第七题: 进制转换
华为机试每日一练--第七题: 进制转换
华为机试每日一练--第七题: 进制转换
华为机试每日一练--第九题: 字符串反转
华为机试每日一练--第九题: 字符串反转
华为机试每日一练--第九题: 字符串反转
|
C语言
蓝桥杯---等差数列(C语言)
找出5个数中两数最小之差(假定公差)
137 0
蓝桥杯---等差数列(C语言)
|
机器学习/深度学习
华为机试每日一练--第六题: 蛇形矩阵
华为机试每日一练--第六题: 蛇形矩阵
华为机试每日一练--第六题: 蛇形矩阵
华为机试每日一练--第八题: 取近似值
华为机试每日一练--第八题: 取近似值
华为机试每日一练--第八题: 取近似值