1334
任意进制间的转换。
n进制(char数组输入)转换为10进制(int类型),再把10进制转换为m进制(char数组储存),格式输出(判断i,若大于7,则错误。若小于等于7,则输出:j=0到7-i输出空格,i位输出数组).
1334
#include<iostream>
#include<iomanip>
#include<stdio.h>
#include<math.h>
#include<string.h>
using namespace std;
int main(){
char s[100],s1[8];
int h1,h2;
while(scanf("%s%d%d",&s,&h1,&h2)!=EOF){
int i,j=0,r,su=0;
for(i=strlen(s)-1;i>=0;i--){
if(s[i]<='9'&&s[i]>='0') r=s[i]-'0';
else if(s[i]>='A'&&s[i]<='F') r=s[i]-'A'+10;
su+=(int)r*pow(h1,j);
j++;
}
i=0;
char t;
while(su){
j=su%h2;
su=su/h2;
if(j>9) t=(char)j-10+'A';
else t=(char)j+'0';
s1[i]=t;
i++;
}
if(i>7){
cout<<" ERROR"<<endl;
continue;
}
for(j=0;j<7-i;j++) printf(" ");
for(j=i-1;j>=0;j--) printf("%c",s1[j]);
printf("\n");
}
return 0;
}