1.进制转换(jinzhi.cpp /jinzhi.in /jinzhi.out)
题目描述 设有一个字符串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> 输入样例 101<2>10 输出样例 101<2>=5<10> 时间限制 各个测试点1s
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
using namespace std;
char c[100]={0};
int main()
{freopen("jinzhi.in","r",stdin);
freopen("jinzhi.out","w",stdout);
charx[10];
inty[10];
inta,b,l,t1=0,t2=0;
scanf("%s",c);
sscanf(c,"%[^<]<%d>%d",x,&a,&b);//sscanf函数 %[^<]的作用是读取字符串^是遇到什么为止字符串处理经典转换
// printf("%d%d %d",x,a,b);
l=strlen(x);
intr=1;
for(inti=l-1;i>=0;i--)//求出十进制
{
t1+=(x[i]-'0')*r;
//cout<<int(x[i]-'0')<<endl;
r*=a;
}//cout<<t1;
intt=0;
while(t1)//辗转除变为b进制
{
y[t++]=t1%b;
t1/=b;
}
//for(inti=t-1;i>=0;i--)
// cout<<y[i];
printf("%s<%d>=",x,a);
for(int i=t-1;i>=0;i--)
cout<<y[i];
cout<<"<"<<b<<">";