进制转换(Q进制转换成T进制) (20分)

题目描述

给定一个整数Q(2<=Q<=10),一个非空字符串,以及另一个整数T(2<=T<=10), 编程要求过滤掉字符串中所有非Q进制数对应的字符组成一个新的字符串,该字符串无正负号,将该字符串表示的Q进制数转换为T进制数的字符串输出。

输入格式:

第一行输入一个整数Q, 代表Q进制(2<=Q<=10)
第二行输入以回车结束的一行非空字符串。
第三行输入一个整数T, 代表要转换成T进制

输出格式:

输出转换后的T进制数字符串。

输入样例:

10
15
2

输出样例:

1111

源代码

#include <stdio.h>
int main()
{
    
    
    int Q, T, Sum = 0;
    char str;
    scanf("%d", &Q);
    while (Q < 2 || Q>10)
        scanf("%d", &Q);
    getchar();
    while ((str = getchar()) != '\n')
        if (str >= '0' && str <= ('0' + Q - 1))
            Sum = Sum * Q + (str - '0');
    if (Sum == 0)
    {
    
    
        printf("0\n");
        return 0;      
    }
    scanf("%d", &T);
    while (T < 2 || T>10)
        scanf("%d", &T);
    if (T == 10)
    {
    
    
        printf("%d", Sum);
        return 0;
    }        
    int num = 0, Tstr[100], i;
    while (Sum != 0)
    {
    
    
        Tstr[num] = Sum % T;
        Sum = Sum / T;
        num++;
    }
    for (i = num - 1; i >= 0; i--)
        printf("%d", Tstr[i]);
    return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_49930465/article/details/112943144
今日推荐