问题 O: 数制转换
时间限制: 1 Sec
内存限制: 125 MB
提交: 27
解决: 11
题目描述
设有一个字符串A$的结构为:A$='m<n>p'
其中m为数字串(长度<=20),而n,p均为1或2位的数字串(其中所表达的内容在2-10之间)。
程序要求:
从键盘上读入A$后(不用正确性检查),将A$中的数字串m(n进制),以p进制的形式输出。
例如:A$='48<10>8'
其意义为:将10进制数48,转换成8进制数输出。
输出结果为:48<10>=60<8>
输入
每个测试文件只包含一组测试数据,每组输入一个字符串,形式如m<n>p。
输出
对于每组输入数据,输出数制转换后的结果,具体格式见样例输出。
样例输入
48<10>8
样例输出
48<10>=60<8>
提示
这个题还可以吧,一般的思想!
#include<stdio.h>
#include<string.h>
int main()
{
char c[25];
int stl,i,j=0,a,b,d[25],k=0,sum,e[25];
gets(c);
stl=strlen(c);
sum=a=b=0;
for(i=0;i<stl;i++)
{
if(c[i]!='<')
{
d[k++]=c[i]-'0';
}
else
{
break;
}
}
i++;
for(i;i<stl;i++)
{
if(c[i]!='>')
{
a=a*10+c[i]-'0';
}
else
{
break;
}
}
i++;
for(i;i<stl;i++)
{
b=b*10+c[i]-'0';
}
for(i=0;i<k;i++)
{
sum=sum*a+d[i];
}
while(sum>0)
{
e[j++]=sum%b;
sum/=b;
}
for(i=0;i<k;i++)
{
printf("%d",d[i]);
}
printf("<%d>=",a);
for(i=j-1;i>=0;i--)
{
printf("%d",e[i]);
}
printf("<%d>\n",b);
}