数制转换

来源:互联网 发布:中兴 网管软件 编辑:程序博客网 时间:2024/06/15 11:14
#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;}

0 0
原创粉丝点击