问题描述
从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
样例输入
FFFF
样例输出
6553
说明:第一次引用了太多变量 ,代码质量不高
#include<stdio.h>
unsigned int fun(char c[9]) //函数类型可以是int,因为输出按无符号输出
{
unsigned int i,j,k,a,b=1,sum=0; //十六进制的八位最大值=2^32-1,故用无符号
for(i=0;c[i]!='\0';i++); //求出位数
k=i; //用于循环求指数
for(;i>0;i--) //从低位开始循环
{
if(c[i-1]>='A') //判断是否为10~15
{
a=c[i-1]-'A'+10; //求该位的十进制数值
j=i; //求位数对应指数的循环变量
for(;j<k;j++)
b=b*16; //求出位数对应指数
sum=sum+a*b; //求出该数的转换
b=1; //每次循环重新赋值
}
else
{
a=c[i-1]-'0';
j=i;
for(;j<k