文章

145

粉丝

143

获赞

21

访问

39.0k

头像
进制转换3 题解:C
P1422 清华大学/厦门大学机试题
发布于2024年1月31日 20:19
阅读数 419

细节!!!

#include <stdio.h>
#include <string.h>
#include <math.h>

//先将m进制x数转10进制数 
long long  Decimal(char x[],int m)
{
	int i,k = 0,len;
	long long d = 0;
	len = strlen(x);
	for(i = len-1; i >= 0; i--)
	{
		if(x[i] >= '0' && x[i] <= '9')
			d += (x[i] - '0')*(pow(m,k));
		else if(x[i] >= 'A')	//进制字母 
			d += (x[i] - 'A' + 10)*(pow(m,k));
		k++;
	}
	return d;
}

//再将十进制x转为相应的进制数
void  Base_Conver(long long d,int n)
{
	int x,i = 0,j;
	char s[1000];
	while(d > 0)
	{
		x = d%n;
		if(x >= 10) s[i] = x - 10 + 'a';
		else s[i] = x + '0';
		d/=n;
		i++;
	}
	for(j = i-1; j >= 0; j--)
		printf("%c",s[j]);
}
	

int main()
{
	int m,n,k;
	long long d;
	char x[1000];
	scanf("%d %d",&m,&n);
	scanf("%s",x);
	//x(m进制)数转十进制数
	d = Decimal(x,m);
	//十进制数d转n进制数
	Base_Conver(d,n);

	return 0;
}

 

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发