进制转换(Q进制转换成T进制)
给定一个整数Q(2<=Q<=10),一个非空字符串,以及另一个整数T(2<=T<=10), 编程要求过滤掉字符串中所有非Q进制数对应的字符组成一个新的字符串,该字符串无正负号,将该字符串表示的Q进制数转换为T进制数的字符串输出。
输入格式:
第一行输入一个整数Q, 代表Q进制(2<=Q<=10)
第二行输入以回车结束的一行非空字符串。
第三行输入一个整数T, 代表要转换成T进制
输出格式:
输出转换后的T进制数字符串。
输入样例:
10
15
2
结尾无空行
输出样例:
1111
结尾无空行
-----------------------------------------------------------------------------------------------
解题思路:我记得好像是先把q进制转换成十进制
然后就是把十进制转换成t进制,没啥难度
熟悉一下进制转换就好啦
-----------------------------------------------------------------------------------------------
#include<iostream> #include<string.h> #include<math.h> using namespace std; int main(){ int q; cin >> q; getchar(); char x[100]; cin.get(x,100); //类似gets() // getchar(); int len=strlen(x); int sum=0; int flag=0; for(int i=len-1;i>=0;i--){ // cout << x[i]; //测试一下数据输入有没有问题 if(x[i]>='0'&&x[i]<(q+'0')){ sum+=(x[i]-'0')*pow(q,flag ); // x<char> -> x<int> flag记录第几次循环 flag++; } } //进制转换 q->10 int t; cin >>t; int y[100]={0}; int w=0; if(sum==0){ //老师特别喜欢卡这种测试点,所以就直接多出来一种可能了 cout <<sum; } while(sum>0){ y[w]=sum%t; sum/=t; w++; } //这个就是 10->t 没啥难度 for(int i=w-1;i>=0;i--){ cout <<y[i]; //最后输出t进制 } }
浙公网安备 33010602011771号