蓝桥杯基础练习 十六进制转十进制

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

65535


#include <stdio.h>#include <string.h>#include <math.h>/*题目中说不超过8位的字符串, 要注意数的范围,当输入8个F后,只有long long型才能保存数据 */ long long converTo(char s[]) {int k;long long num = 0;//从最后一个数字开始算起 for(int i=strlen(s)-1,k=0;i>=0;i--,k++) {if(s[i] >= 'A' && s[i] <= 'F') {num += (long long) ((s[i] - 55) * pow(16,k));}else {num += (long long) ((s[i] - '0') * pow(16,k));}}return num;}int main(int argc, char *argv[]) {char s[9];scanf("%s", s);printf("%lld\n", converTo(s));return 0;}


0 0