ElemType c; SqStack s; int len,i,sum=0; InitStack(&s); printf("請輸入二進制數,輸入#符號表示結束!\n"); scanf("%c",&c); while (c!='#') { Push(&s,c); scanf("%c",&c); } getchar(); /*把'\n'從緩衝區去掉*/ len=StackLen(s); printf("棧的當前容量是:%d\n",len); for (i=0;i<len;i++) { Pop(&s,&c); sum+=(c-48)*pow(2.0,i); } printf("轉換爲十進制數是: %d\n",sum);
ElemType c; SqStack s1; InitStack(&s1); int len,i=1,j=0; int sum=0; printf("請輸入二進制數,已#符號結束:\n"); scanf("%c",&c); while (c!='#') { Push(&s1,c); scanf("%c",&c); } getchar(); len=StackLen(s1); printf("棧的當前容量爲%d\n",len); SqStack s2; InitStack(&s2); printf("八進制爲:"); while (i<=len) { Pop(&s1,&c); sum+=(c-48)*pow(2.0,j++); if (i%3==0) //夠位數,壓棧 { Push(&s2,(char)(sum+48)); sum=0; j=0; } i++; } if (sum!=0) //如果剩餘的二進制數不足三位,上面的while循環將不會將它壓入棧中,自己來 { Push(&s2,(char)(sum+48)); }
//輸出 len=StackLen(s2); for (int i=0;i<len;i++) { Pop(&s2,&c); printf("%c",c); }
輸出結果: