C++编程题:把一个超过2的32次方的十进制正整数转化为十六进制数?

来源:百度知道 编辑:UC知道 时间:2024/09/28 13:30:28
如题~~
不一定要具体程序的~希望能给出个算法思想什么的也行!~
顺便说一下2的32次方之内数的转化我已经会了~
谢谢了~!
高分伺候~!

用数组来存大数..
大数模和大数除,一会儿帮你写一个,先占个位置.
//抱歉,有事去了,写了一半没写.现在发一下我写的.
#include <stdio.h>
#include <string.h>
int main()
{
char a[100];
int b[100],c[100];
int i,len;
while(gets(a))
{
len=strlen(a);
memset(b,0,sizeof(b));
for(i=0;i<len;i++)
b[i]=a[i]-'0';
int remind=b[0],temp,k=0,p=0;
while(1)
{
remind=b[p];
for(i=p+1;i<len;i++)
{
temp=b[i];
b[i]=(b[i]+remind*10)/16;
remind=(temp+remind*10)%16;
}b[p]=0;p++;
c[k++]=remind;
int flag=0;
for(i=p;i<len;i++)
if(b[i]!=0)
{flag=1;break;}
if(!flag) break;
}
for(i=k-1;i>=0;i--)
if(c[i]>=10)
printf("%c",c[i]-10+'A');
else
printf("%d",c[i]);
printf("\n");
}
}
当输入Ctrl+Z时,程序运行结束.
这个我用的数组只能存100位数字,要修改可以直接修改下标..这个大数的算法其余就是模拟手算,你直接考虑在纸上来算一下,手动算,然后你就知道怎么求了.
注释我没标,我就大致说一下这程序的