C语言实现进制转换

古城微笑少年丶 2022-05-15 04:47 330阅读 0赞

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

代码实现:

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

运行结果:
这里写图片描述这里写图片描述这里写图片描述这里写图片描述这里写图片描述这里写图片描述这里写图片描述这里写图片描述

发表评论

表情:
评论列表 (有 0 条评论,330人围观)

还没有评论,来说两句吧...

相关阅读

    相关 C语言转换

    C语言进制转换 各个进制转换 C语言指数的使用 1.十进制整数转换为二进制整数 十进制整数转换为二进制整数采用"除2取余,逆序排列"法。具体做法是:用2