主题:用C语言,如何写十进制转换十六进制的程序 作者:meiyoudao 发表时间:2006-9-6 17:39:00 楼主 用C语言,如何写十进制转换十六进制的程序,要注意十六进制有ABCDEF。 作者:argentmoon 发表时间:2006-9-6 18:09:00 第1楼 只是输出的话%X...保存起来的话就模16去做好了 作者:阿斯兰 发表时间:2006-9-6 20:29:00 第2楼 取余后得的数如果>=10 转换成ABC....字母 作者:hitsoft 发表时间:2006-9-6 21:35:00 第3楼 我没事写了个,你看看,对于小的数字,这个程序根本就不用想,所以我写了个大数字转换成16进制的:#include "Stdio.h"#include "Conio.h"char result[100];int pos;void change(int *num);int main(void){ char str[100]; int num[100]; int bin[300]={0}; int quot[100],residue=0; int i,j,k=0,suffix=0,index=0; puts("Input a decimal number:"); gets(str); for(i=0;i<strlen(str);num[i]=str[i]-48,i++); j=i-1; while(j>=0) { num[j]%2?(bin[k++]=1):(bin[k++]=0); while(index<=j) { residue+=num[index]; if(residue>=2) quot[suffix++]=residue/2; else if(index) quot[suffix++]=0; residue=(num[index]%2)*10; index++; } for(i=0;i<suffix;num[i]=quot[i],i++); j=suffix-1; residue=suffix=index=0; } for(i=0;i<k;change(bin+i),i+=4); for(i=pos-1;i>=0;printf("%c",result[i]),i--); getch(); return 0;}void change(int *num){ if(num[3]==0&&num[2]==0&&num[1]==0&&num[0]==0) sprintf(result+pos,"%c",'0'); if(num[3]==0&&num[2]==0&&num[1]==0&&num[0]==1) sprintf(result+pos,"%c",'1'); if(num[3]==0&&num[2]==0&&num[1]==1&&num[0]==0) sprintf(result+pos,"%c",'2'); if(num[3]==0&&num[2]==0&&num[1]==1&&num[0]==1) sprintf(result+pos,"%c",'3'); if(num[3]==0&&num[2]==1&&num[1]==0&&num[0]==0)