#include "iostream"
using namespace std;
#define MAX 50
int main()//八转二
{
int elem2[MAX];
char elem8[MAX];
cout << "请输入八进制数,并以‘$’结束:";
int flag = 1;
char ch;
int i = 0;
while (flag)
{
cin >> ch;
if (ch != '$')
{
elem8[i] = ch;
i++;
}
else
{
flag = 0;
}
}
int length1 = i;
int length2 = 0;
int n = 0;
int sum = 0;
for (n = 0; n < length1; n++)//判断是否是八进制数
{
int x = (int)elem8[n];
if (x>=48&&x<=55)
sum++;
}
if (sum == length1)
{
int j = 0;
int number = 0;
int k = 0;
int p = 0;
int m = 0;
int cout = 2;
for (j = 0; j < length1; j++)
{
m = cout;
number = elem8[j] - 48;
if (number != 1)
{
do
{
elem2[m] = number % 2;
number = number / 2;
length2++;
k++;
m--;
} while (number>1);
if (k == 2)
{
elem2[m] = 1;
length2++;
m--;
}
else
{
elem2[m] = 1;
length2++;
m--;
elem2[m] = 0;
length2++;
m--;
}
k = 0;
}
else
{
elem2[m] = 1;
m--;
length2++;
for (p = 0; p < 2; p++)
{
elem2[m] = 0;
length2++;
m--;
}
}
cout = cout + 3;
}
}
else
{
cout << "输入的不是八进制数!";
}
cout << "正序输出:";
for (i = 0; i < length2;i++)
cout << elem2[i] << " ";
cout << endl;
return 0;
}
C语言,进制转换之八进制转二进制,完整代码
最新推荐文章于 2024-07-26 19:14:58 发布