题目描述
给定一个整数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;
}