进制转化

这个我在网上看到的一篇进制转化,因为我正在学c,老师要让我们写进制转化,大多数进制转化代码量都挺多的,依靠我的vs2019跑出来后出现大量问题,这个是vs版本问题,我就做了自己的解释,以及对代码做了部分修改。

#include<stdio.h>//stdio .h 头文件定义了三个变量类型、一些宏和各种函数来执行输入和输出
#include<string.h>//string .h 头文件定义了一个变量类型、一个宏和各种操作字符数组的函数。
void main()
{
	int n, m, i, j;//定义了四个分别为n,m,i,j的int类型的
	char x[100];//定义了数组x的长度
	while (scanf("%d%d", &n, &m) != EOF)//EOF为End Of File的缩写,获取两个数n为需要转化进制的数,m为需要转化的进制
	{
		if (n == 0)break;//判断n是否等于0,
		memset(x, 0, sizeof(x));// memset()memset可以方便的清空一个结构类型的变量或数组。sizeof用来求一个对象(类型,变量,……)所占的内存大小(以字节为单位)。
		if (m < 10)//当m小于10时,进行以下循环,判断是否进行10以下的进制转化,不是则进行10以上的进制转化
		{
			i = 0;//赋予i的值为0
			while (n != 0)//当n不等于0时进行以下步骤
			{
				x[i++] = n % m + '0';//数组x[]就是转化后的进制,并记录下来
					n = n / m;//n等于n除以m的值取整数,再判断n是否等于0,不等于0时,继续改循环,直到n等于0

			}

		}
		if (m > 10)//进行10以上的进制转化
		{
			i = 0;//赋予i的值为0
			while (n != 0)//当n不等于0时进行以下步骤
			{
				if (n % m < 10)//判断n除以m后的余数是不是小于10,当小于10时,返回数字1-9,当大于等于10时,返回字母a-g
                     x[i++] = n % m +'0';
                else x[i++] = n % m - 10 +'A';
				n = n / m;//n等于n除以m的值取整数,再判断n是否等于0,不等于0时,继续改循环,直到n等于0
			}
		}
		if(m!=10)
		{
			for (j = i - 1; j >= 0; j--)//j等于i-1,当j大于等于0时输出x[j]转化后对应的字符,再进行j自减,直到j小于0时退出该循环
				printf("%c", x[j]);//将x[j]按照ASCII码相应转换为对应的字符
			printf("\n");//换行
		}
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值