十进制数转换成二进制八进制十六进制(c语言)
#include
#include
#include
#define STACK_INIT_SIZE 100 #define STACKINCREMENT 10 #define OVERFLOW -2
#define OK 1
#define ERROR -1
typedef struct{
int *base;
int *top;
int stacksize;
} SqStack;
int InitStack(SqStack &S);
int GetTop(SqStack S,int &e); int Push(SqStack &S,int e);
int Pop(SqStack &S,int &e);
int InitStack(SqStack &S);
int StackEmpty(SqStack S);
void JinZhi(SqStack &S,int e,int cj); int main()
{
int N,Cho;
int cj;
SqStack S;
InitStack(S);
printf("请选择转换类型:1:十进制->二进制 2:十进制->八进制 3:十进制->十
六进制 \n");
printf("请输入你的选择:");
scanf("%d",&Cho);
switch(Cho)
{
case 1:cj=2;printf("你选择的是十进制转换成二进制\n\n");printf("请输入要转
换的十进制数:");scanf("%d",&N);break; case 2:cj=8;printf("你选择的是十进制转换成八进制\n\n");printf("请输入要转
换的十进制数:");scanf("%d",&N);break;
case 3:cj=16;printf("你选择的是十进制转换成十六进制\n\n");printf("请输入要
转换的十进制数:");scanf("%d",&N);break;
default:printf("请从1-3中选择!");
}
JinZhi(S,N,cj);
return OK;
}
void JinZhi(SqStack &S,int N,int cj) {
int e;
char jz;
while(N)
{
Push(S,N%cj);
N=N/cj;
}
printf("转换后的值: ");
while(!StackEmpty(S))
{
Pop(S,e);
if(e>=10)
{
switch(e)
{
case 10:jz='a';break;
case 11:jz='b';break;
case 12:jz='c';break;
case 13:jz='d';break; case 14:jz='e';break;
case 15:jz='f';break;
}
printf("%c",jz);
}
else
printf("%d",e);
}
printf("\n");
}
int InitStack(SqStack &S)
{
S.base=(int *)malloc(STACK_INIT_SIZE*sizeof(int));
if(!S.base) exit(OVERFLOW); S.top=S.base;
S.stacksize=STACK_INIT_SIZE;
return OK;
}
int GetTop(SqStack S,int &e) {
if(S.top==S.base) return ERROR;
e=*(S.top-1);
return OK;
}
int Push(SqStack &S,int e)
{
if((S.top-S.base)>=S.stacksize)
{
S.base=(int
*)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(int));
if(!S.base) exit(OVERFLOW); S.top=S.base+S.stacksize;
S.stacksize+=STACKINCREMENT;
}
*S.top++=e;
return OK;
}
int Pop(SqStack &S,int &e)
{
if(S.top==S.base) return ERROR;
e=*--S.top;
return OK;
}
int StackEmpty(SqStack S) {
if(S.top!=S.base) return 0;
}
本文档为【十进制数转换成二进制八进制十六进制(c语言)】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。