写一个函数,输入一个十六进制数,输出相应的十进制数(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);}