进制转换增强版模板

来源:互联网 发布:淘宝店铺交易平台 编辑:程序博客网 时间:2024/06/12 19:48
可以将任何进制数转换为需要进制数。
板子  输入: n(当前数) a(当前数的进制标准) b(需要转换的进制标准)
代码来源于HDU OJ的1335题。(当进制转换后输出的数若大于7位 输出ERROR)

 #include <iostream>
#include <string.h>
#include <cmath>
#include <cstring>
#include <cstdlib>
#include <algorithm>
using namespace std;
int main()
{
char str[10];
int i,a,b,sum,len;
char end[100];
memset(str,0,sizeof(str));
while(~scanf("%s %d %d",str,&a,&b))
{
sum=0;
len=strlen(str);
for(i=len-1;i>=0;i--)
{
if(str[i]>='A')
{
sum+=(str[i]-'A'+10)*pow(a*1.0,(len-1-i)*1.0);
}
else
{
sum+=(str[i]-'0')*pow(a*1.0,(len-1-i)*1.0);
}
}
memset(end,0,sizeof(end));
itoa(sum,end,b);
strupr(end);
if(end[7]!=0)
{
printf("  ERROR\n");continue;
}
for(i=6;i>=0;i--)
{
if(end[i]==0) printf(" ");
else break;
}
puts(end);
memset(str,0,sizeof(str));
}
return 0;
}
0 0