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

运行结果:

相关推荐
曙曙学编程33 分钟前
stm32——NVIC,EXIT
c语言·c++·stm32·单片机·嵌入式硬件
HUST1 小时前
C语言 第三讲:分支和循环(上)
c语言·开发语言
今日待办1 小时前
Arduino Nano33 BLESense Rev2【室内空气质量检测语音识别蓝牙调光台灯】
c语言·单片机·嵌入式硬件·mcu·语音识别·ardunio·arduinonano33
这里没有酒4 小时前
[C语言] 结构体 内存对齐规则 内存大小计算
c语言·开发语言
半夜吃早餐6 小时前
【STM32HAL-----NRF24L01】
c语言·开发语言·stm32·单片机·嵌入式硬件
ShineWinsu8 小时前
对于单链表相关经典算法题:206. 反转链表及876. 链表的中间结点的解析
java·c语言·数据结构·学习·算法·链表·力扣
再睡一夏就好8 小时前
【C++闯关笔记】STL:list 的学习和使用
c语言·数据结构·c++·笔记·算法·学习笔记
学习噢学个屁12 小时前
基于STM32的交通灯设计—紧急模式、可调时间
c语言·stm32·单片机·嵌入式硬件
潼心1412o16 小时前
C语言(长期更新)第15讲 指针详解(五):习题实战
c语言·开发语言
JuneXcy19 小时前
结构体简介
c语言·数据结构·算法