写一个函数,输入一个十六进制数,输出相应的十进制数(C语言)
题目要求:如标题
思路:
- 十六进制数为:0,1,2,3,4,5,6,7,8,9,A(10),B(11),C(12),D(13),E(14),F(15)
- 比如0xFF=1516ˆ1+1516ˆ0=255,0xAB=1016ˆ1+1116ˆ0=171
- 设定length=strlen(str)-1,term为每一项的值。同时设定i,令i=0;i<=length;i++
- a为相应的十六进制数转为十进制数的乘数,即(0~15)
- 此时需要用到pow函数,则term=a*pow(16,length-i),最后把term叠加即可
以下是具体代码:
#include <stdio.h>
#include <string.h>
#include <math.h>
int main()
{
void hexadecimal_decimal(char str[]);
char string[1000];
printf("please enter a hexadecimal number: ");
gets(string);
hexadecimal_decimal(string);
return 0;
}
void hexadecimal_decimal(char str[])
{
int length;
length=strlen(str)-1;
int sum=0;
int term;
int i;
int a;
for(i=0;i<=length;i++)
{
if(str[i]>='0' && str[i]<='9')
a=str[i]-'0';
else if(str[i]>='A' && str[i]<='F')
a=10+(str[i]-'A');
else if(str[i]>='a' && str[i]<='f')
a=10+(str[i]-'a');
term=a*pow(16,length-i);
sum=sum+term;
}
printf("The decimal number is: %d\n",sum);
}
3786




被折叠的 条评论
为什么被折叠?



