一、补全代码:
读入形为xxx...x<a>b的字符串(长度不超过16个字符),其中xxx...x是a进制的数字串,代表一个a进制的数。然后将此整数转换成b进制的整数,再输出此整数相应的数字串。a,b为2到10之间的数字(包括2和10)。
示例:
输入
1765<8>2
输出
11 1111 0101
#include <stdio.h>
#include <stdlib.h>
#define MAXLEN 16
int main()
{
system("cls");
int inform, outform, c, i, next=0;
char digits[MAXLEN], a, b, ch;
printf("请输入规定的字符串(格式:xxx...x<a>b):");
while((ch=getchar())<'9' && ch>='0')//过滤掉'<
{
digits[next++]=ch;
}
a = getchar();//获取<>中的字符
if(a<='9' && a>='2')
{
inform = a-'0';
}
else
{
inform = 10;
}
getchar();//过滤掉'>'
b=getchar();//获取要转换成的进制字符
outform = (b <= '9' && b >= '2') ? b - '0' : 10;
//进行转换,转换为十进制数
for (c = i = 0; i <= next - 2; i++)
{
c = --------------;
}
c = c + digits[i] - '0';
//转换成对应的进制并以字符形式存储在数组中
next = 0;
do
{
digits[next++] = c % outform + '0';
}
while ((c=c-c%outform) > 0);
//倒序输出
for (i = next - 1; i >= 0; i--)
{
printf("%c",digits[i]);
}
printf("\n");
system("pause");
return 0;
}