大数转为二进制的栈的应用
发布时间:2020-12-14 02:17:22 所属栏目:大数据 来源:网络整理
导读:今天花了好久的时间写了一个栈的二进制应用,最后还是被我写出了,感觉还是挺有成就感的,特意记录下 普通整数转化,应该很简单,不多说了 #includeiostreamusing namespace std;typedef struct{int key;}stack;int top = -1;stack s[10000];int main() {int
今天花了好久的时间写了一个栈的二进制应用,最后还是被我写出了,感觉还是挺有成就感的,特意记录下 普通整数转化,应该很简单,不多说了 #include<iostream> using namespace std; typedef struct{ int key; }stack; int top = -1; stack s[10000]; int main() { int n; cin >> n; while (n) { s[++top].key = n % 2; n /= 2; } while (top != -1) { cout << s[top--].key; } return 0; } 大数的转化,读进来字符串,后来用字符串来操纵,但一直错,后来直接全部改为用数组来操作,还行 #include<iostream> using namespace std; typedef struct{ int key; }stack; int top = -1; stack s[10000]; int main() { int len=0,i,j,k,sum,temp,a,b,zhi[10000]; bool flag; char ch[10000]; cin >> ch; while (ch[len] != ' ') len++; for (i = 0; i < len; i++) zhi[i] = ch[i] - '0'; while (1) { //判断,若全部都为0的话,则退出循环 flag = false; for (i = 0; i < len; i++) { if (zhi[i] != 0) { flag = true; break; } } //核心代码,每一次计数时自己位上变为原来/2,随后记录下余数,待下一位进行判断 if (flag) { temp = 0; for (i = 0; i < len; i++) { sum = temp * 10 + zhi[i]; a = sum % 2; b = sum / 2; zhi[i] = b; if (a) temp = 1; else temp = 0; } s[++top].key= a; } else break; } k = 1; //输出的操作 while (top != -1) { cout << s[top--].key; if ((k)%4 == 0) cout << " "; k++; } return 0; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |