写一个函数,输入一个十六进制数,输出相应的十进制数
程序分析:若不对输出字符串中的元素进行处理,则输出的是该元素的ASCI码。在十六进制中分别用A,B,C,D,E,F代表数字10,11,12,13,14,15.经查ASCI字符代码表,发现可用字母的ASCI减去字符’7’的ASCI码就可以得到每个字母代表的数字。
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
int main()
{
int z(char a[], int n);
char a[10];
int i = 0;
int n;
printf("请输入一个十六进制的数:");
while (scanf("%c", &a[i]) && a[i] != '\n')
{
i++;
}
n = z(a, i);
printf("该数转换成十进制为:%d", n);
printf("\n");
system("pause");
return 0;
}
int z(char a[], int n)
{
int sum = 0;
int i, j;
for (i = n - 1, j = 0; i >= 0; i--, j++)
{
if (a[i] >= 'A' && a[i] <= 'F')
{
a[i] = a[i] - '7';
}
else
{
a[i] = a[i] - '0';
}
sum = sum + a[i] * pow(16, j);
}
return sum;
}
调试结果: