[C语言]十六进制转为十进制:1)请编写htoi函数,其功能是将十六进制字符串转为十进制整数。2)在主函数中输入一个十六进制字符串(长度不超过8个字符),调用上述函数计算此十六进制对应的十进制,最后

1)请编写htoi函数,其功能是将十六进制字符串转为十进制整数。
2)在主函数中输入一个十六进制字符串(长度不超过8个字符),调用上述函数计算此十六进制对应的十进制,最后在主函数中输出该函数的返回值。

注意:不要改变函数名称,注意大小写敏感。

输入

输入一个十六进制字符串,长度不超过8个字符。

输出

输出十进制整数。

输入示例1

f

输出示例1

15

输入示例2

a7

输出示例2

167

数据范围

输入为字符串,输出为int范围的整数

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
int main() {
	char a[8];                    //定义字符串
	gets(a);
	printf("%d",htoi(a));     //调用函数
	return 0;
}
int htoi(char a[]){
	int i,b,x;
	int sum=0,pos;
	for(i=0;i<strlen(a);i++){
		if(a[i]=='a'){    //============================================================
			b=10;                   //16进制中的特殊ABCDEF单独拎出来分支表示
		}
		else if(a[i]=='b'){
			b=11;
		}
		else if(a[i]=='c'){
			b=12;
		}
		else if(a[i]=='d'){
			b=13;
		}
		else if(a[i]=='e'){
			b=14;
		}
		else if(a[i]=='f'){
			b=15;
		}//=============================================================================
		else if(a[i]=='0'){             // 从此处往下开始,其实完全可以用
			b=0;                          // else {b=atoi(a[i])}代替
		}
		else if(a[i]=='1'){          //(atoi为将字符转为整形的函数)
			b=1;                  //这里没用是因为我这么写的时候报错了
		}                         //但是我觉的理论上没问题,应该是哪里出错了
		else if(a[i]=='2'){
			b=2;
		}
		else if(a[i]=='3'){
			b=3;
		}
		else if(a[i]=='4'){
			b=4;
		}
		else if(a[i]=='5'){
			b=5;
		}
		else if(a[i]=='6'){
			b=6;
		}
		else if(a[i]=='7'){
			b=7;
		}
		else if(a[i]=='8'){
			b=8;
		}
		else if(a[i]=='9'){
			b=9;
		}//==============================================================================
		x=pow(16,strlen(a)-i-1);//16的 次幂
		pos=x*b;                //次幂乘以当前项
		sum=sum+pos;       //最后所有加和
    }
    return sum;
}

思路为一般思路,但是代码写的比较臃肿,解法不唯一,仅供参考

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值