求解! c|c++用栈来描述将十位进制数转换为2,8,16进制 选择使用switch为何不进入switch而直接跳出?

作者在 2022-11-20 11:47:51 发布以下内容
#include<iostream>
#include<malloc.h>
#include<stdio.h>
#define STACKINITSIZE 100
#define STACKINCREMEMT 10
using namespace std;
typedef struct{
    int *base; //动态存储空间的基地址,栈底
    int *top; //栈顶指针,指向真实栈元素的下一个位置
    int stacksize;
}Sqstack;
void InitStack(Sqstack &S){ //创建动态空间 
S.base = (int *)malloc(STACKINITSIZE * sizeof(int));
S.top = S.base;
S.stacksize = STACKINITSIZE; 
}
int StackNull(Sqstack &S){ //判断栈是否为空 
if(S.base == S.top){
return 0;
}else{
return 1;
}

int StackFull(Sqstack &S){//判断栈是否满栈 
if(S.top - S.base == S.stacksize){
return 0;
}else{
return 1;
}
}
void push(Sqstack &S,int e){//入栈
  
if(StackFull(S) == 0){
S.base = (int *)realloc(S.base,(S.stacksize +STACKINCREMEMT) * sizeof(int));
S.top =  S.base + S.stacksize;
S.stacksize += STACKINCREMEMT;
}
*S.top = e;
S.top++;

}
int pop(Sqstack &S){//出栈
S.top--;
int e = *S.top;

return e;

}


void conversion_16(Sqstack &S,int a){//10进制转16进制 
int y=0;
int s;
int e;
InitStack(S);
cout<<a<<"的16进制表示:";
if(a==0)
{
cout<<0;
}
while(a>0)
{
y=a%16; 
if(y<10){
s=int('0'+y);
}else{
s=int('A'-10+y);
}
a=a/16;
push(S,s);
}
while(StackNull(S) == 1){
e = pop(S);
cout<<char(e);
}
cout<<endl;

 void conversion_8(Sqstack &S,int n){//10进制转8进制 
  int e;
  InitStack(S);
  cout<<n<<"的8进制表示:";
  while(n){
  push(S,n%8);
  n =  n/8;
  }
 
  while(StackNull(S) == 1){
  e = pop(S);
  cout<<e;
  }
  cout<<endl;
 } 


 void conversion_2(Sqstack &S,int n){//10进制转2进制 
  int e;
  InitStack(S);
  cout<<n<<"的2进制表示:";
  while(n){
  push(S,n%2);
  n =  n/2;
  }
 
  while(StackNull(S) == 1){
  e = pop(S);
  cout<<e;
  }
  cout<<endl;
} //10进制转8进制 

int main()
  { 
Sqstack S;
int n;
int choose=0;
cout<<"请输入一位10进制数字"<<endl;
cin>>n;  
cout<<"请输入你要转换的进制"<<endl;
    int a=0;
cin>>a;
choose=a;
switch(choose)
{
case'2':
{conversion_2(S, n);}
break;
case'8':
{conversion_8(S, n);}
break;
case'16':
{conversion_16(S,n);}
break;}
    getchar();
getchar();
getchar();
   return 0;
}
默认分类 | 阅读 789 次
文章评论,共0条
游客请输入验证码
文章分类
文章归档
最新评论