描述
写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。
数据范围:保证结果在 1 \le n \le 2^{31}-1 \1≤n≤231−1
输入描述:
输入一个十六进制的数值字符串。
输出描述:
输出该数值的十进制字符串。不同组的测试用例用\n隔开。
示例1
输入:
0xAA
输出:
170
解析:
考察ASCII码
0 十六进制 30 十进制 48
A 十六进制 41 十进制 65
a 十六进制 61 十进制 97
从后往前循环,将16进制转化为10进制,如A转化为10,并乘于位数累加,比如0xaa=10*16+10,最前面的0x不读取
#include<stdio.h>
#include<string.h>
int main(){
char c[11]={0};
gets(c);
int count=0;
int t=1;//位数
//printf("%d",strlen(c));
for(int i=strlen(c)-1;i>1;i--){
//A 41=65 a 61=97 数字 30=48
if(c[i]>=65&&c[i]<=70){
//大写
count+=(c[i]-55)*t;
//printf("%d",count);
}
else if(c[i]>=97&&c[i]<=102){
//小写
count+=(c[i]-87)*t;
//printf("%d",count);
}
else if(c[i]>=48&&c[i]<=57){
//数字
count+=(c[i]-48)*t;
//printf("%d",count);
}
t*=16;//位数进一
}
printf("%d",count);
}