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/C++】strerror、GetLastError 和 errno 的含义和区别?
c语言·c++
代码无bug抓狂人7 小时前
动态规划(附带入门例题)
c语言·算法·动态规划
恶魔泡泡糖8 小时前
51单片机串口通信
c语言·单片机·嵌入式硬件·51单片机
知无不研9 小时前
c语言动态内存规划
c语言·动态内存管理·内存泄露·基础知识·malloc·realloc·calloc
31087487610 小时前
0005.C/C++学习笔记5
c语言·c++·学习
历程里程碑11 小时前
Linxu14 进程一
linux·c语言·开发语言·数据结构·c++·笔记·算法
JiL 奥11 小时前
Nexus制品归档(c/c++项目)
c语言·c++
梵刹古音11 小时前
【C语言】 字符型变量
c语言·开发语言·嵌入式
wengqidaifeng12 小时前
探索数据结构(二):空间复杂度
c语言·开发语言·数据结构
皮皮哎哟13 小时前
夯实基础:数据结构核心概念与线性表(顺序表&链表)C语言全解析 数据结构篇
c语言·数据结构·顺序表·单向链表·有头链表