C语言,进制转换之八进制转二进制,完整代码

小鱼儿 2022-06-08 12:28 379阅读 0赞
  1. #include "iostream"
  2. using namespace std;
  3. #define MAX 50
  4. int main()//八转二
  5. {
  6. int elem2[MAX];
  7. char elem8[MAX];
  8. cout << "请输入八进制数,并以‘$’结束:";
  9. int flag = 1;
  10. char ch;
  11. int i = 0;
  12. while (flag)
  13. {
  14. cin >> ch;
  15. if (ch != '$')
  16. {
  17. elem8[i] = ch;
  18. i++;
  19. }
  20. else
  21. {
  22. flag = 0;
  23. }
  24. }
  25. int length1 = i;
  26. int length2 = 0;
  27. int n = 0;
  28. int sum = 0;
  29. for (n = 0; n < length1; n++)//判断是否是八进制数
  30. {
  31. int x = (int)elem8[n];
  32. if (x>=48&&x<=55)
  33. sum++;
  34. }
  35. if (sum == length1)
  36. {
  37. int j = 0;
  38. int number = 0;
  39. int k = 0;
  40. int p = 0;
  41. int m = 0;
  42. int cout = 2;
  43. for (j = 0; j < length1; j++)
  44. {
  45. m = cout;
  46. number = elem8[j] - 48;
  47. if (number != 1)
  48. {
  49. do
  50. {
  51. elem2[m] = number % 2;
  52. number = number / 2;
  53. length2++;
  54. k++;
  55. m--;
  56. } while (number>1);
  57. if (k == 2)
  58. {
  59. elem2[m] = 1;
  60. length2++;
  61. m--;
  62. }
  63. else
  64. {
  65. elem2[m] = 1;
  66. length2++;
  67. m--;
  68. elem2[m] = 0;
  69. length2++;
  70. m--;
  71. }
  72. k = 0;
  73. }
  74. else
  75. {
  76. elem2[m] = 1;
  77. m--;
  78. length2++;
  79. for (p = 0; p < 2; p++)
  80. {
  81. elem2[m] = 0;
  82. length2++;
  83. m--;
  84. }
  85. }
  86. cout = cout + 3;
  87. }
  88. }
  89. else
  90. {
  91. cout << "输入的不是八进制数!";
  92. }
  93. cout << "正序输出:";
  94. for (i = 0; i < length2;i++)
  95. cout << elem2[i] << " ";
  96. cout << endl;
  97. return 0;
  98. }

发表评论

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

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

相关阅读