本文介绍: 在每次循环中,我们首先检查当前字符是否在 ‘0’ – ‘9’ 的范围内,如果是,则表示该字符是一个数字。如果当前字符不是数字,则继续检查它是否在 ‘A’ – ‘F’ 或 ‘a‘ – ‘f’ 的范围内。如果当前字符既不是数字也不是字母,则说明输入的字符串不是一个有效的十六进制数。在函数 xbed 中,我们定义了两个变量 i 和 sum,其中 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] >= '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("%dn", sum);
}
原文地址:https://blog.csdn.net/m0_63002183/article/details/134707106
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_40034.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。