本文介绍: 在每次循环中,我们首先检查当前字符是否在 ‘0’ – ‘9’ 的范围内,如果是,则表示字符一个数字。如果当前字符不是数字,则继续检查是否在 ‘A’ – ‘F’ 或 ‘a‘ – ‘f’ 的范围内。如果当前字符既不是数字也不是字母,则说明输入字符串不是一个有效十六进制数。在函数 xbed 中,我们定义两个变量 isum,其中 i 用于循环遍历输入十六进制数,sum 用于存储最终的十进制值。接下来程序调用名为 xbed函数,并将用户输入十六进制数作为参数传递给该函数

分析

    当用户运行程序时,程序提示用户输入一个十六进制数。用户需要命令行输入一个有效十六进制数,例如:”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] &gt;= '0' &amp;&amp; a[i] <= '9') 
			sum = sum * 16 + a[i] - 48;
		else if (a[i] &gt;= 'A' &amp;&amp; a[i] <= 'F')  
			sum = sum * 16 + a[i] - 55;
		else if (a[i] >= 'a' &amp;&amp; a[i] <= 'f')  
			sum = sum * 16 + a[i] - 87;
		else
			printf("这不是16进制"); exit(EXIT_FAILURE);
	}
	printf("十进制:");
	printf("%dn", sum);
}

运行结果

原文地址:https://blog.csdn.net/m0_63002183/article/details/134707106

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_40034.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注