进制转换(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进制
    }
}

 

posted @ 2021-11-07 17:58  星落化尘丶  阅读(359)  评论(0)    收藏  举报