求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编辑过]