大数进制转换

#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
void change(int base1,int base2,char str[],char result[]);
int leap;
int main()
{
int n;
while(1==scanf("%d",&n))
{
  int num=0;
  for(num=0;num<n;num++)
  {
   leap=0;
   int base1,base2,length,i,sign;
   char str[1000],result[1000];
   scanf("%d%d%s",&base1,&base2,str);
   printf("%d %s\n",base1,str); 
   printf("%d ",base2);
   length=strlen(str);
   int kkkk=0;
   for(i=0;i<length;i++)
   {
    if(str>='A'&&str<='Z')
     str-=7;
    else if(str>='a')
     str-=13;
    if(str=='0')
     kkkk++;
   }
   if(kkkk==length||(length==1&&str[0]==0))
   {
    printf("0\n\n");
    continue;
   }
   change(base1,base2,str,result);
   length=strlen(result);
   for(i=0;i<length;i++)
   {
    if(result-'0'>=10&&result-'0'<=35)
     result+=7;
    else if(result-'0'>=36)
     result+=13;
   }
   reverse(&result[0],&result[length]);
   if(!leap)
   {
    for(i=0;i<length;i++)
     if(result!='0')
     {
      sign=i;
      break;
     }
    for(i=sign;i<length;i++)
     printf("%c",result);
    printf("\n");
   }
   printf("\n");
  }
}
return 0;
}
void change(int base1,int base2,char str[],char result[])
{
int temp,i,length,k=0;
char quetient[1000];
length=strlen(str);
i=0;
while(i<length)
{  
  temp=0;
  for(i=0;i<length;i++)
  {
   temp=temp*base1+str-'0';
   quetient=temp/base2+'0';
   temp%=base2;
  }
  quetient='\0';
  result[k++]=temp+'0';
  for(i=0;i<length;i++)
   str=quetient;
  for(i=0;i<length;i++)
  {
   if(quetient!='0')
    break;
  }
}
result[k]='\0';
return;
} 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值