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

今天药忘吃喽~ 2022-06-08 12:47 400阅读 0赞
  1. #include "iostream"
  2. using namespace std;
  3. #define MAX 50
  4. int main()//二转八
  5. {
  6. cout << "请输入二进制数,并以‘$’结束:";
  7. char elem2[MAX];
  8. int flag = 1;
  9. char ch;
  10. int i = 0;
  11. while (flag)
  12. {
  13. cin >> ch;
  14. if (ch != '$')
  15. {
  16. elem2[i] = ch;
  17. i++;
  18. }
  19. else
  20. {
  21. flag = 0;
  22. }
  23. }
  24. int length = i;
  25. int n = 0;
  26. int sum = 0;
  27. int product = 0;
  28. if (length % 3 != 0)//将缺位的二进制码用0补齐
  29. {
  30. int n = 3 - length % 3;
  31. int i = 0;
  32. for (i = length-1; i>=0; i--)
  33. elem2[i + n] = elem2[i];
  34. length += n;
  35. for (i = 0; i < n; i++)
  36. elem2[i] = '0';
  37. cout << "补齐之后的内容是:" << endl;
  38. for (i = 0; i < length; i++)
  39. cout << elem2[i] << " ";
  40. cout << endl;
  41. }
  42. for (n = 0; n < length; n++)//判断是否是二进制数
  43. {
  44. if ('1' == elem2[n] || '0' == elem2[n])
  45. sum++;
  46. }
  47. if (sum == length)
  48. {
  49. int elem8[MAX];
  50. int r = 0;
  51. int m = 0;
  52. int p = 0;
  53. int q = 0;
  54. for (m = length - 1; m >= 0; m--)
  55. {
  56. q = elem2[m] - '0';
  57. product += q * pow(2, p);
  58. p++;
  59. if (3 == p)
  60. {
  61. elem8[r] = product;
  62. r++;
  63. p = 0;
  64. product = 0;
  65. }
  66. }
  67. int j = 0;
  68. cout << "对应的八进制数是:" << endl;
  69. for (j = r-1; j>=0;j--)
  70. cout<<"0"<<elem8[j]<<" ";
  71. cout << endl;
  72. }
  73. else
  74. {
  75. cout << "你输入的不是二进制数!" << endl;
  76. }
  77. return 0;
  78. }

发表评论

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

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

相关阅读