#include"stdio.h"
#include"iostream"
using namespace std;
const int MAXSIZE = 100;
typedef struct
{
char *base;
char *top;
int size;
}sqstack;
bool INitStack(sqstack &s)
{
s.base = new char[MAXSIZE];
if (!s.base)exit(OVERFLOW);
s.top = s.base;
s.size = MAXSIZE;
return true;
}
bool ClearStack(sqstack &s)
{
s.top = s.base;
return true;
}
bool push(sqstack &s, int e)
{
if (s.top - s.base == s.size)return false;
*s.top = e;
s.top++;
return true;
}
bool pop(sqstack &s, int &e)
{
if (s.top == s.base)return false;
s.top--;
e = *s.top;
return true;
}
int Gettop(sqstack s)
{
if (s.top != s.base)
return *(s.top - 1);
return 0;
}
void show(sqstack const s)
{
sqstack p = s;
p.top--;
do
{
cout << *p.top;
if (p.top == p.base)break;
p.top--;
} while (1);
}
bool BIT(sqstack &s,int &sum)
{
int i, temp;
temp = sum;
while (sum != 0)
{
i = sum % 2;
if (i < 0)
{
i = -i;
}
switch (i)
{
case 1:i = '1'; break;
case 0:i = '0'; break;
}
sum = sum / 2;
push(s, i);
}
if (temp >= 0)
{
push(s, '0');
}
else
{
push(s, '1');
}
cout << "二进制数为:" << endl;
show(s);
cout << endl;
ClearStack(s);
return true;
}
bool HEX(sqstack &s,int &sum)
{
int temp, i;
temp = sum;
while (sum != 0)
{
i = sum % 16;
if (i < 0)
{
i = -i;
}
switch (i)
{
case 1:i = '1'; break;
case 2:i = '2'; break;
case 3:i = '3'; break;
case 4:i = '4'; break;
case 5:i = '5'; break;
case 6:i = '6'; break;
case 7:i = '7'; break;
case 8:i = '8'; break;
case 9:i = '9'; break;
case 10:i = 'A'; break;
case 11:i = 'B'; break;
case 12:i = 'C'; break;
case 13:i = 'D'; break;
case 14:i = 'E'; break;
case 15:i = 'F'; break;
}
sum = sum / 16;
push(s, i);
}
if (temp >= 0)
{
push(s, '0');
}
else
{
push(s, '1');
}
cout << "十六进制数为;" << endl;
show(s);
cout << endl;
ClearStack(s);
return true;
}
int main()
{
int sum;
sqstack s;
INitStack(s);
cout << "请输入需要转换的数:" << endl;
cin >> sum;
cout << "进行几进制转换(1.二进制,2.十六进制):" << endl;
int i;
cin >> i;
switch (i)
{
case 1:BIT(s,sum); break;
case 2:HEX(s,sum); break;
}
return 0;
}
数制转换

最新推荐文章于 2022-08-24 13:40:39 发布