首页 十进制数转换成二进制八进制十六进制(c语言)

十进制数转换成二进制八进制十六进制(c语言)

举报
开通vip

十进制数转换成二进制八进制十六进制(c语言)十进制数转换成二进制八进制十六进制(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); in...

十进制数转换成二进制八进制十六进制(c语言)
十进制数转换成二进制八进制十六进制(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,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_266065
暂无简介~
格式:doc
大小:16KB
软件:Word
页数:5
分类:企业经营
上传时间:2017-10-06
浏览量:19