一、[题目] 进制转换3 (十六进制转十进制)
时间限制:1.0s 内存限制:512.0MB
问题描述
从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
样例输入
FFFF
样例输出
65535
二、[代码]:
PS. 进制转换3 (十六进制转十进制) 是也是上一道题 进制转换1 的变形,题目由原来的十进制转十六进制变为了其逆,这里我们同样利用现有的C库函数得出简单便捷的解法,以下列出我的解法。
算法一: 基本库函数法(利用C库函数strupr(), strlen(), isdigit(), pow() 以及 printf() 的格式化输出)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <math.h>
int main()
{
char T[9];
scanf("%s",T); strupr(T);
int P=strlen(T),L=P;
double N=0,X=16;
while(P--){
N+=isdigit(T[P])?(T[P]-'0')*pow(X,L-P-1):(T[P]-'A'+10)*pow(X,L-P-1);
}
printf("%.0f",N);
return 0;
}
欢迎评论和转载,转载请注明文章出处,我对此表示最真诚的敬意!