关于十进制转换成n进制问题的解法

在进行十进制转换成n<10进制问题时,我们通常将需要转换的数字除以n,进而能够得到一个商和余数,然后将余数保留在一个新创造的数组中,通过不断的对商进行除以n,得到新的商和余数,余数再次进行保存,我们可以得到一个数组,将数组进行逆序输出就可以得到我们想要的结果。但与普通的二进制和八进制等问题不同,在转换成n>10进制数时,余数就应该用A,B,C等英文字母表示,如果用阿拉伯数字就对应着10,11,12等,可以创建一个数组Hex[16]={‘0‘,‘1’,‘2’,...‘E’,'F'};逆序输出时将存储的余数譬如x[i]放到数组Hex中形成Hex[x[i]]进行输出即可。

#include<stdio.h>
int main()
{
	char Hex[16] = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};//Hex[1]='1'而不是1,如果是后者则是将ASCII码值为1的数赋给Hex[1]
	int x[20];
	int n, b,i=0;
	scanf_s("%d", &n);//输入十进制要转换成多少进制
	scanf_s("%d", &b);//输入需要转换进制的数字
	do
	{
		x[i++] = b % n;
		b = b / n;
	} while (b);
	for (i--; i >= 0; i--)
		printf("%c", Hex[x[i]]);
	return 0;

这里可能是VS2022编译器出了点问题scanf需要改成scanf_s才能进行输入

输出结果如下

 

 

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值