进制转换
程序员文章站
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++——字符串分割
下一篇: leetcode78. 子集