求int型任意数据进制转换算法
要实现int型任意数据进行<=16的进制转换题目是:
Description
设计一个程序,该程序能将任意的一个int型10进制非负整数转换成任意N进制的数(N<=16)。
Input
第一行为需要进行进制转换的整数个数N,从第二行开始的N行列出需要转换的十进制数和需要转化到的进制的基数。
Output
每行输出转换后的进制数。
Sample Input
Original Transformed
3
10 2
26 16
Sample Output
Original Transformed
1010
1A
17
我写的代码是:
程序代码:#include<stdio.h>
#include<string.h>
void tra(int a, int n,char *p)
{
for (int i = 0;i < 100000;i++)
{
if (a == 0)return;
p[i] = a%n+'0';
a = a / n;
p[i + 1] = '\0';
}
}
void tra1(int a, int n, char *q)
{
for (int i = 0;i < 100000;i++)
{
if (a == 0)return;
if (a%n < 10)q[i] = a%n+'0';
else
{
q[i] = 'A' + a%n-10;
}
a = a / n;
q[i + 1] = '\0';
}
}
int main()
{
int n,m,t;
char p[1000] = { 0 };
scanf("%d", &n);
while (n--)
{
scanf("%d%d", &m, &t);
if (t > 10)tra1(m, t, p);
else tra(m, t, p);
for (int i = strlen(p)-1;i >= 0;i--)
{
printf("%c", p[i]);
}
printf("\n");
}
return 0;
}可是输入很大的数据时就无法得出结果了,比如2^32这样的数据就算不出结果,应该怎么写这个程序?
[此贴子已经被作者于2016-1-31 13:31编辑过]









