#include
#include
#include
int main(int argc, char *argv[])
{
int a[50],b[50],i,j,k,m1[10],m2[10],max1,max2,c,d,f,g=0,h;
char s1[11],s2[11];
scanf("%s",s1);
scanf("%s",s2);
for(h=0;h<50;h++)
{
a[h]=0;
b[h]=0;
}
for(i=0;s1[i]!='\0';i++)
{
if(s1[i]>='A'&&s1[i]<='Z')
m1[i]=s1[i]-55; /*将两个字符串换成整形并确定长度*/
else
m1[i]=s1[i]-48;
}
for(j=0;s2[j]!='\0';j++)
{
if(s2[j]>='A'&&s2[j]<='Z')
m2[j]=s2[j]-55;
else
m2[j]=s2[j]-48;
}
max1=m1[0];
max2=m2[0];
for(k=0;k {
if(m1[k]>max1) max1=m1[k];
} /*确定各数位最大值*/
for(k=0;k
if(m2[k]>max2)
max2=m2[k];}
for(k=max1;k<=36;k++)
{
a[k]=0;
d=1;
for(c=0;c {
d=pow(k,i-c-1)*m1[c];
a[k]+=d;
}
} /*从最大位进制开始循环*/
for(k=max2;k<=36;k++)
{
b[k]=0;
d=0;
for(c=0;c
d=m2[c]*pow(k,j-c-1);
b[k]+=d;
}
}
for(k=max2+1;k<=36;k++)
{
for(f=max1+1;f<=36;f++)
if(a[f]==b[k])
{
printf("%s (base %d) = %s (base %d)\n",s1,f,s2,k);
g++;
break;
}
if(a[f]==b[k])
break;
}
if(g==0)
printf("%s is not equal to %s in any base 2..36\n",s1,s2);
system("PAUSE");
return 0;
}
希望你以后注意缩进格式
多用tab键控制格式,每层都往里tab键一下,每层对齐,多对着书本上的程序练练,慢慢就好了,程序我好久没动了,也有回答了,您参考一下吧,格式控制的非常好。。。。
编程恶习:你这个1)缩进,2)空格都让人很不舒服啊....
tab缩进,用空格的话太麻烦而且也控制不好,看起来太乱了……