栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

任意进制转换(c语言)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

任意进制转换(c语言)

用函数实现将任意两种进制的数制相互转换。

输入格式:

输入在一行给出三个整数,第1个数为原数的进制(正整数),第2数为原数(或正或负整数),第3个数为需转换的进制(正整数)。

输出格式:

输出转换后的数。

样例1">样例1">样例1">输入样例1:

在这里给出一组输入。例如:

8 76541 16

输出样例1:

在这里给出相应的输出。例如:

7D61

输入样例2:

在这里给出一组输入。例如:

2 -10111100 10

输出样例2:

在这里给出相应的输出。例如:

-188

 

#include
int main()
{
	int old,now;//初始进制/目标进制
	char a[100];//数组

	scanf("%d %s %d", &old,a,&now);


	int shi = 0;//十进制
	int quan = 1;//权
	int temp = 0;//计算每位的值
	int cont = 0;//新数组位数
	int fu = 1;
	for (int i = strlen(a)-1; i >= 0; i--)//转换为十进制
	{
		if (a[i] >= '0' && a[i] <= '9')
			temp = a[i] - '0';
		else if (a[i] >= 'A' && a[i] <= 'Z')
			temp = a[i] - 'A' + 10;
		else
		{
			fu = -1;
			break;
		}
		shi += temp * quan;
		quan *= old;
	}

	while (shi)//转换为目标进制
	{
		temp = shi % now;
		shi /= now;
		if (temp >= 10)
			a[cont] = temp - 10 + 'A';
		else
			a[cont] = temp + '0';
		cont++;
	}
	if (fu == -1)
		printf("-");
	for (int i = cont-1; i >= 0; i--)
		printf("%c", a[i]);
	

}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/938528.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号