题目:将整数转换为10进制、2进制、16进制的数字串。
分析:整数转化为10进制,这个就不用多说了,直接printf()就好了~转化为二进制,其实也很简单,先看看算法,比如6得二进制是多少呢?,又是怎么来的呢?来看看~
先6%2得到a[0]=0;再6/2=3;
用3%2得到a[1]=1;再3/2=1;
用1%2得到a[2]=1;
然后再把数组a的值倒序输出,那么6得二进制自然就是110喽~
举一反三,可以得出十进制转化为二进制的方法~
那么十进制转化为16进制呢?还不是一样的道理吗?
一起来看看代码吧~
代码:
1 #include<stdio.h> 2 void ten_s(int n,int s)//十转二 3 { 4 int b[8]={0}; 5 int i,t=n,k=0; 6 for(i=0;i<8;i++) 7 { 8 t/=s; 9 if(t>0) 10 { 11 k++; 12 } 13 else break; 14 } 15 for(i=k;i>=0;i--) 16 { 17 b[i]=n%s; 18 n/=s; 19 } 20 for(i=0;i<=k;i++) 21 { 22 printf("%d",b[i]); 23 } 24 printf("\n"); 25 } 26 void ten_h(int n,int s)//十转十六 27 { 28 char b[8]={0}; 29 int i,t=n,k=0; 30 for(i=0;i<8;i++) 31 { 32 t/=s; 33 if(t>0) 34 { 35 k++; 36 } 37 else break; 38 } 39 40 for(i=k;i>=0;i--) 41 { 42 t=n; 43 t%=s; 44 switch(t) 45 { 46 47 case 10: b[i]=‘A‘;break; 48 case 11: b[i]=‘B‘;break; 49 case 12: b[i]=‘C‘;break; 50 case 13: b[i]=‘D‘;break; 51 case 14: b[i]=‘E‘;break; 52 case 15: b[i]=‘F‘;break; 53 } 54 if(t<10&&t>=0) 55 { 56 b[i]=t; 57 } 58 n/=s; 59 } 60 for(i=0;i<=k;i++) 61 { 62 if(b[i]>=65&&b[i]<=70) 63 printf("%c",b[i]); 64 else printf("%d",b[i]); 65 } 66 printf("\n"); 67 } 68 void main() 69 { 70 int a,s; 71 while(1) 72 { 73 printf("输入一个整数0-255以及需要转换的进制数:\n"); 74 scanf("%d%d",&a,&s); 75 if(s==2||s==8) 76 { 77 ten_s(a,s); 78 } 79 if(s==16) 80 ten_h(a,s); 81 } 82 83 }
答案例:
是不是十分容易呢?
欢迎联系我的qq:251685331
一起学习~
原文:http://www.cnblogs.com/wobrm-zxm/p/6284531.html