欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

进制转换

程序员文章站 2024-03-11 20:13:55
...

进制转换

#include<stdio.h>

int main()
{
	int a[32];//定义一个数组储存余数
	int N,R,sign,len;
	void output(int a[],int len,int sign);
	int change(int a[],int N,int R);
	while(scanf("%d %d",&N,&R)!=EOF)
	{		
		if(N==0)//特殊处理
		{
			printf("0\n");
			continue;
		}
		//处理负数
		sign=1;
		if(N<0)
		{
			sign=-1;
			N=-N;
		}		
		len=change(a,N,R);
		output(a,len,sign);
	}
	return 0;
}
void output(int a[],int len,int sign)
{
	int i;
		if(sign==-1)
			printf("-");//输出负号	
		for(i=len-1;i>=0;i--)//逆序输出
		{
			if(a[i]<10)
				printf("%d",a[i]);
			else
				printf("%c",a[i]-10+'A');
		}		
		printf("\n");	
}
int change(int a[],int N,int R)
{
	int j=0;
	while(N>0)
	{
		a[j++]=N%R;//求余数,将余数的值储存到数组中		
		N=N/R;//求商
	}
	return j;//返回数组长度
}

相关标签: C语言