#include<stdio.h>
#include<stdlib.h>
#define Size 4
typedef struct node{
int a[Size],top;
}sqstack;
void init(sqstack & L){
int x; L.top=-1;
if(L.top==Size-1) return ;
for(int i=0;i<Size;i++){
printf("请输入要储存的数据:");
scanf("%d", &x);
L.a[++L.top]=x; }
} //初始化 赋值
void output(sqstack & L){
if(L.top==-1) return;
while(L.top!=-1){
int x=L.a[L.top--];
printf("该链表的数据有:%d",x);
printf("\n"); }
} //出栈
void trans(sqstack & L){
if(L.top==-1) return;
int p=1,o=0,y=0; //o是余数
for(int i=0;i<Size;i++){
while(L.a[i]>=1){
o=L.a[i]%2;
y=p*o+y;
p=p*10;
L.a[i]=L.a[i]/2;
}
printf("转换后为:%d\n",y);
o=y=0;p=1; }
// output(L); }
void trans1 (sqstack & L) {
int num2, p=1,o=0,y=0; //o是余数
for(int i=0;i<Size;i++){
while(L.a[i]>=1){
o=L.a[i]%8;
y=p*o+y;
p=p*10;
L.a[i]=L.a[i]/8; }
printf("转换后为:%d\n",y); y=0; p=1;o=0; }
}
main(){
sqstack L;int num1,b;
init(L);
printf("请输入要转换的进制:");
scanf("%d",&b) ;
switch(b) {
case 2: trans(L);break;
case 8:trans1 (L);break;
}
/* trans(L); // output(L); printf("请输入要转换的数据个数:"); scanf("%d",&num1); trans1 (num1); */
}