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

运行结果:

相关推荐
老当益壮梁奶奶42 分钟前
Linux软件编程学习笔记(八):进程间通信详解(1)
linux·c语言·笔记·学习·算法
「QT(C++)开发工程师」1 小时前
C++11 std::unique_ptr — 独占所有权的智能指针
c语言·开发语言·c++·qt
不正经学生1 小时前
C语言动态内存管理(上):堆上的自由与责任
c语言·开发语言·c++·算法·面试
布莱克6054 小时前
队列详解:定义、分类、应用场景及与栈的区别(C/C++ 代码讲解)
c语言·开发语言·c++·队列
CPETW4 小时前
USB TO I2C_(Excel)_Scan ---- 1000KHz总线速率测试_A
c语言·开发语言·网络·科技·单片机
Navigator_Z4 小时前
LeetCode //C - 1221. Split a String in Balanced Strings
c语言·算法·leetcode
en.en..5 小时前
C语言 static函数与头文件封装规范
java·c语言·前端
布莱克6056 小时前
栈(Stack)详解:定义、作用、应用场景及与队列的区别(附 C/C++ 代码)
c语言·开发语言·c++·
wuyk5556 小时前
从零吃透 Modbus 通信|第 6 章:线圈功能码 05/0F 实现 & Modbus‑TCP 基础入门
c语言·网络·网络协议·tcp/ip
zbyyd7 小时前
Linux 进程间通信(IPC):信号、消息队列、共享内存与信号量详解
linux·运维·c语言