c语言十六进制转十进制以及解决使用scanf函数报错

**

首先,先了解一下ASCII码表

**
https://baike.baidu.com/item/ASCII/309296?fr=aladdin

代码:

int main()
{
    
    
	char ch[20];
	scanf("%s\n", ch);//%s是字符串的,用""   %c是单个字符的,用''
	int len = strlen(ch);//求字符串的长度
	int i = 0;
	int j = 0;
	int sum = 0;//存放十进制数总和   如果数字较大 int字节太小  可以用 long long
	for (i = len - 1; i >= 0; i--)
	{
    
    
		//计算0-9十六进制转十进制 
		if ((ch[i] >= '0') && (ch[i] <= '9'))//字符一定要加单引号
		{
    
    
			sum += (ch[i] - '0') * (int)pow(16, j);//pow函数是double类型,强制类型转换成int  用到pow函数得引头文件#include <math.h>   
			j++;
		}
		//计算10-15十六进制转十进制 A-F分别对应10 11 12 13 14 15 
		else if (ch[i] >= 'A' && ch[i] <= 'F')//ASCII码表了解一下

		{
    
    
			sum += (ch[i] - 'A' + 10) * (int)pow(16, j);
			j++;
		}
	}
	printf("%d\n", sum);
	return 0;
}

在这里插入图片描述
在这里插入图片描述




如果出现这个错误,那是因为 用了scanf函数,这时候需要定义**#define _CRT_SECURE_NO_WARNINGS 1** 然后就好了在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/XSAAA/article/details/109706655