【C语言】进制转换

时间:2021-08-11
本文章向大家介绍【C语言】进制转换,主要包括【C语言】进制转换使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

转载自:C语言实现进制转换

基本功能:
1、十进制转换二进制
2、十进制转换八进制
3、十进制转换十六进制
4、二进制转换十进制
5、八进制转换十进制
6、十六进制转换十进制
0、 退 出

  1 #include<stdio.h>
  2 #include<stdlib.h>
  3 #include<math.h>
  4 
  5 void mune()
  6 {
  7     printf("******************************************************\n");
  8     printf("**                                                  **\n");
  9     printf("**                   进制转换                       **\n");
 10     printf("**                                                  **\n");
 11     printf("**              1、十进制转换二进制                 **\n");
 12     printf("**              2、十进制转换八进制                 **\n");
 13     printf("**              3、十进制转换十六进制               **\n");
 14     printf("**              4、二进制转换十进制                 **\n");
 15     printf("**              5、八进制转换十进制                 **\n");
 16     printf("**              6、十六进制转换十进制               **\n");
 17     printf("**              0、    退     出                    **\n");
 18     printf("**                                                  **\n");
 19     printf("******************************************************\n");
 20 }
 21 
 22 void TenToTwo()
 23 {
 24     int num,m, c, i = 0;
 25     int n = 2;
 26     int a[32];
 27     printf("输入一个整数:");
 28     scanf("%d", &num);
 29     m = num;
 30     while (num>0)
 31     {
 32         c = (num % n);
 33         a[i] = c;
 34         num = num / n;
 35         i++;
 36     }
 37     printf("十进制数%d转换成二进制数是:", m);
 38     for (i--; i >= 0; i--)           //将数组倒序输出
 39         printf("%d", a[i]);
 40     printf("\n");
 41 }
 42 
 43 void TenToEight()
 44 {
 45     int num, m, c, i = 0;
 46     int n = 8;
 47     int a[32];
 48     printf("输入一个整数:");
 49     scanf("%d", &num);
 50     m = num;
 51     while (num>0)
 52     {
 53         c = (num % n);
 54         a[i] = c;
 55         num = num / n;
 56         i++;
 57     }
 58     printf("十进制数%d转换成八进制数是:", m);
 59     for (i--; i >= 0; i--)           //将数组倒序输出
 60         printf("%d", a[i]);
 61     printf("\n");
 62 }
 63 
 64 void TenToSixteen()
 65 {
 66         char arr[] = "0123456789ABCDEF";
 67         char hex[16];
 68         int i = 0;
 69         int j = 0;
 70         int num = 0,a = 0;
 71         printf("输入一个整数:");
 72         scanf("%d", &num);
 73         a = num;
 74         while (num)
 75         {
 76             hex[i++] = arr[num % 16];   //对十进制数求余并最终与hextable数组中的字符匹配
 77             num = num / 16;
 78         }
 79         printf("十进制数%d转换成十六进制数是:", a);
 80         for (j = i - 1; j >= 0; --j)
 81             printf("%c", hex[j]);
 82         printf("\n");
 83 }
 84 
 85 void TwoToTen()
 86 {   
 87         long long n,a;
 88         int sum = 0, i = 0, m;
 89         printf("输入一个二进制数: ");
 90         scanf("%lld", &n);
 91         a = n;
 92         while (n != 0)
 93         {
 94             m = n % 10;
 95             n /= 10;
 96             sum += m*pow(2, i);
 97             ++i;
 98         }
 99         printf("二进制数 %lld 转换为十进制为 %d\n", a, sum);
100 }
101 
102 void EightToTen()
103 {
104     int n, a;
105     int sum = 0, i = 0, m;
106     printf("输入一个八进制数: ");
107     scanf("%d", &n);
108     a = n;
109     while (n != 0)
110     {
111         m = n % 10;
112         n /= 10;
113         sum += m*pow(8, i);
114         ++i;
115     }
116     printf("八进制数 %d 转换为十进制为 %d\n", a, sum);
117 }
118 
119 void SixteenToTen()
120 {
121     int num = 0;
122     printf("输入一个十六进制数: ");
123     scanf("%x", &num);
124     printf("十六进制数 %x 转换为十进制为 %d\n", num, num);
125 }
126 
127 int main()
128 {
129     int n = 0;
130     while (1)
131     {
132         mune();
133         printf("请选择:");
134         scanf("%d", &n);
135         switch (n)
136         {
137         case 1:TenToTwo();
138             break;
139         case 2:TenToEight();
140             break;
141         case 3:TenToSixteen();
142             break;
143         case 4:TwoToTen();
144             break;
145         case 5:EightToTen();
146             break;
147         case 6:SixteenToTen();
148             break;
149         case 0:
150             exit(0);
151             break;
152         default:
153             printf("您的选择错误!!!\n");
154             break;
155         }
156     }
157 }

原文地址:https://www.cnblogs.com/20201212ycy/p/15127308.html