1.题目描述
写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。(多组同时输入 )
2.输入描述:
输入一个十六进制的数值字符串。
3.输出描述:
输出该数值的十进制字符串。
4.示例1
输入
0xA
输出
10
5.知识点
1.除k取余法,主要用于十进制转换为k进制数;
2.k进制转10进制,10的n次方。
易错点:
0xAB,输入后,长度为4,不是2;
需要剔除前缀0x,八进制由 0~7 八个数字组成,使用时必须以0开头(注意是数字 0,不是字母 o);二进制由 0 和 1 两个数字组成,使用时必须以0b或0B(不区分大小写)开头
。
6.代码
#include <stdio.h>
#include <string.h>
#include <stdio.h>
#include <math.h>
int main()
{
char str[100];
int sum, len;
while (scanf("%s",&str)!=EOF)
{
sum = 0;
len = strlen(str);
for (int i = 0; i < len; i++)
{
if (str[i]>='0' && str[i]<='9')
{
sum = sum + (str[i] - 48)*pow(16, len - i-1);
}
else if (str[i] >= 'A' && str[i] <= 'F')
{
sum = sum + (str[i] - 55)*pow(16, len - i - 1);
}
}
printf("%d\n", sum);
}
return 0;
}