C语言:写一个函数,输入一个十六进制数,输出相应的十进制数

分析:

当用户运行该程序时,程序会提示用户输入一个十六进制数。用户需要在命令行中输入一个有效的十六进制数,例如:"1A3F"。

接下来,程序调用了名为 xbed 的函数,并将用户输入的十六进制数作为参数传递给该函数。

在函数 xbed 中,我们定义了两个变量 i 和 sum,其中 i 用于循环遍历输入的十六进制数,sum 用于存储最终的十进制值。

然后,使用一个 for 循环来遍历输入的十六进制数。在每次循环中,我们首先检查当前字符是否在 '0' - '9' 的范围内,如果是,则表示该字符是一个数字。我们将其转换为对应的十进制数,并更新 sum 变量。

如果当前字符不是数字,则继续检查它是否在 'A' - 'F' 或 'a' - 'f' 的范围内。如果是,则表示该字符是一个字母(A-F或a-f)。我们将其转换为对应的十进制数,并更新 sum 变量。

如果当前字符既不是数字也不是字母,则说明输入的字符串不是一个有效的十六进制数。程序输出一条错误提示信息,并使用 exit 函数终止程序的执行。

当循环结束后,我们打印出转换后的十进制数 sum。

代码:

复制代码
#include<stdlib.h>
int main()
{
	void xbed(char b[]);
	int i = 0;
	char a[10000];
	printf("十六进制:");
	scanf("%s", a);
	xbed(a);
}
void xbed(char a[])
{
	int i = 0, sum = 0;
	for(;a[i];i++)
	{
		if (a[i] >= '0' && a[i] <= '9') 
			sum = sum * 16 + a[i] - 48;
		else if (a[i] >= 'A' && a[i] <= 'F')  
			sum = sum * 16 + a[i] - 55;
		else if (a[i] >= 'a' && a[i] <= 'f')  
			sum = sum * 16 + a[i] - 87;
		else
			printf("这不是16进制"); exit(EXIT_FAILURE);
	}
	printf("十进制:");
	printf("%d\n", sum);
}

运行结果:

相关推荐
努力创造奇迹6 小时前
C 语言联合体、枚举、typedef 详解
c语言·开发语言
ImAlex6 小时前
C语言结构体中0字节数组(柔性数组)的妙用(附内存排布图解和完整代码)
c语言
纪元A梦6 小时前
华为OD机试真题——阿里巴巴找黄金宝箱Ⅰ(2025A卷:100分)Java/python/JavaScript/C/C++/GO最佳实现
java·c语言·javascript·c++·python·华为od·go
ImAlex7 小时前
如何使用gcc的-finstrument-functions特性通过打印函数调用栈辅助理解复杂C/C++项目的函数调用关系
linux·c语言
小柒的博客8 小时前
联合体union的特殊之处
c语言·机器人
YuforiaCode9 小时前
第十二届蓝桥杯 2021 C/C++组 空间
c语言·c++·蓝桥杯
YuforiaCode9 小时前
第十二届蓝桥杯 2021 C/C++组 卡片
c语言·c++·蓝桥杯
阿方.91811 小时前
C语言----操作符详解(万字详解)
c语言·开发语言
夜晚中的人海12 小时前
【C语言】初阶算法相关习题(二)
c语言·开发语言·算法
神一样的老师12 小时前
使用 MQTT - C 访问 IoTDA 平台:一个完整的嵌入式示例
c语言·开发语言·物联网