[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;
}

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

可以使用以下C语言代码来实现将十六进制字符串转换为十进制整数函数: ```c #include <stdio.h> #include <stdlib.h> int htoi(char hexNum\[\]) { int decNum = strtol(hexNum, NULL, 16); return decNum; } int main() { char hexNum\[10\]; // 存储输入的十六进制数 int decNum; // 存储转换后的十进制数 printf("输入一个十六进制数:"); scanf("%s", hexNum); decNum = htoi(hexNum); printf("转换后的十进制数为:%d\n", decNum); return 0; } ``` 这个函数使用了`strtol`函数十六进制字符串转换为十进制整数。`strtol`函数的第一个参数是要转换的字符串,第二个参数是一个指向字符指针的指针,用于存储转换后剩余的字符串部分(如果有的话),第三个参数是指定进制的基数,这里使用16表示十六进制函数返回转换后的十进制整数。 在主函数,首先定义了一个字符数组`hexNum`用于存储输入的十六进制数。然后调用`htoi`函数十六进制字符串转换为十进制整数,并将结果存储在`decNum`变量最后,使用`printf`函数输出转换后的十进制数。 注意,这个代码示例假设输入的十六进制字符串长度超过8个字符。如果需要处理更长的字符串,可能需要对代码进行适当的修改。 #### 引用[.reference_title] - *1* [[C语言]十六进制转为十进制:1)编写htoi函数,其功能是将十六进制字符串转为十进制整数。2)在主函数...](https://blog.csdn.net/ZDEWBYE/article/details/124325943)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [C语言设计实现十六进制十进制数之间的相互转换](https://blog.csdn.net/qq_50635297/article/details/131209256)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值