将整数转换为10进制、2进制、16进制的数字串。

题目:将整数转换为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

一起学习~

posted @ 2017-01-14 01:20  祖旭明  阅读(891)  评论(0编辑  收藏  举报