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

运行结果:

相关推荐
晓蛋2 天前
c语言指的是什么意思
c语言·编译器·编程开发·集成开发环境·程序实例
傲世仙尊2 天前
目录即文件-Ext文件系统收尾篇
linux·c语言
牵猫散步的鱼儿2 天前
重载、重写(覆盖)、重定义区别
c语言
phltxy2 天前
C 语言指针:从内存地址到灵活的数据访问
c语言
phltxy2 天前
C 语言中的数据存储:从类型到二进制位
c语言
wuminyu2 天前
HotSpot的轻量锁与膨胀后的ObjectMonitor状态重建原理
java·linux·c语言·jvm·c++
码不停蹄Zzz2 天前
指针用法篇——malloc和free指针详解
c语言
彧azz2 天前
操作系统时间管理与系统核心板块学习总结
c语言·笔记·学习·系统架构
白色的北极熊2 天前
c语言 牛客网 BC15
c语言
老当益壮梁奶奶2 天前
ARM汇编学习笔记(六):【i.MX6ULL】时钟系统与定时器(EPIT & GPT)
c语言·arm开发·嵌入式硬件·学习·51单片机