|
<p>用C语言编程如何将十进制转换成十六进制?</p>
<p><img src="http://img.baidu.com/img/iknow/icn_point.gif"> 悬赏分:5 -</p>
<p>解决时间:2010-9-28 13:21</p>
<p>提问者: lschance - 五级</p>
<p>最佳答案</p>
<p>给你个各种进制转换的通用函数,十进制转十六进制,d1=10,d2=16</p>
<p>#include <stdio.h></p>
<p>void conversion(char s[],char s2[],int d1,int d2)</p>
<p>{</p>
<p>// s[]:转换前的数字</p>
<p>// s2[]:转换后的数字</p>
<p>// d1:原进制数</p>
<p>// d2:需要转换到的进制数</p>
<p>// 高于9 的位数用大写\'A\'~\'Z\'表示</p>
<p>int i,j,t,num=0;</p>
<p>char c;</p>
<p>for (i=0;s!=\'\0\';i++)</p>
<p>{</p>
<p>if(s<=\'9\'&&s>=\'0\')</p>
<p>t=s-\'0\';</p>
<p>else</p>
<p>t=s-\'A\'+10;</p>
<p>num=num*d1+t;</p>
<p>}</p>
<p>i=0;</p>
<p>while(1)</p>
<p>{</p>
<p>t=num%d2;</p>
<p>if (t<=9)</p>
<p>s2=t+\'0\';</p>
<p>else</p>
<p>s2=t+\'A\'-10;</p>
<p>num/=d2;</p>
<p>if (num==0)</p>
<p>break;</p>
<p>i++;</p>
<p>}</p>
<p>for(j=0;j<=i/2;j++)</p>
<p>{</p>
<p>c = s2[j];</p>
<p>s2[j] = s2[i-j];</p>
<p>s2[i-j] = c;</p>
<p>}</p>
<p>s2[i+1]=\'\0\';</p>
<p>}</p>
<p>int main()</p>
<p>{</p>
<p>char a[100],b[100]={0},c[100]={0};</p>
<p>int n,m;</p>
<p>while(1)</p>
<p>{</p>
<p>scanf("%d%d%*c",&n,&m);</p>
<p>gets(a);</p>
<p>conversion(a,b,n,m);</p>
<p>printf("%s\n",b);//想转成int型,可用int k=atoi(b);</p>
<p>}</p>
<p>return 0;</p>
<p>}</p>
<p>1</p>
<p>回答者:</p>
<p>hi_xjy - 七级 2010-9-27 22:18</p>
<p>我来评论>></p>
<p>提问者对于答案的评价:</p>
<p>只有你写了程序出来,虽然有点问题,但还是谢谢你!</p>
|
|