数据结构C语言实现之数制转换

数据结构C语言实现之数制转换

ID:38782778

大小:51.00 KB

页数:6页

时间:2019-06-19

数据结构C语言实现之数制转换_第1页
数据结构C语言实现之数制转换_第2页
数据结构C语言实现之数制转换_第3页
数据结构C语言实现之数制转换_第4页
数据结构C语言实现之数制转换_第5页
资源描述:

《数据结构C语言实现之数制转换》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、数据结构C语言实现之数制转换一、需求分析1、程序所实现的功能;程序通过对栈的应用,实现了将一个十进制整数向R进制数的转换。2、程序的输入,包含输入的数据格式和说明;程序运行时,输入任意十进制整数。对于转换进制R的值则应为:10、2、8、16。3、程序的输出,程序输出的形式;输出为转换成的R进制整数。二、设计内容  1、说明本程序中所有用到的数据及其数据结构的定义及其基本操作的定义;1)定义栈的顺序存储结构typedefstruct{int*base;int*top;intstacksize;}SqStack;//栈的顺序存储表示2)栈的初

2、始化intInitStack(SqStack&S)3)判断一个栈是否为空intStackEmpty(SqStack&S)4)入栈操作intPush(SqStack&S,inte)5)出栈操作intPop(SqStack&S,int&e)6)数制转换函数voidconversion(SqStack&S,intR,intN,int&e)7)判断是否输入正确intNinputlegality()intRinputlegality()8)主函数voidmain()2、给出注释详细的源程序,及其设计思想的描述;#include#i

3、nclude#include#defineSTACK_INIT_SIZE1000#defineSTACKINCREMENT10#defineTRUE1#defineFALSE0#defineOK1#defineERROR0#defineOVERFLOW0typedefstruct{int*base;int*top;intstacksize;}SqStack;//栈的顺序存储表示intN;//定义全局变量N,表示将要转换为R进制的十进制数intR;//定义全局变量R,表示进制数RintInitStac

4、k(SqStack&S){S.base=(int*)malloc(STACK_INIT_SIZE*sizeof(int));if(!S.base)exit(0);S.top=S.base;S.stacksize=STACK_INIT_SIZE;returnOK;}//栈的初始化intStackEmpty(SqStack&S){if(S.top==S.base)returnTRUE;elsereturnFALSE;}//判断栈是否为空intPush(SqStack&S,inte){if(S.top-S.base>=S.stacksize){

5、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;returnOK;}//进栈操作intPop(SqStack&S,int&e){if(S.top==S.base)returnERROR;e=*--S.top;returnOK;}//出栈操作voidconversion(

6、SqStack&S,intR,intN,int&e){while(N){Push(S,N%R);N=N/R;}while(!StackEmpty(S)){Pop(S,e);if(e<10){printf("%d",e);}else{e=e+55;printf("%c",e);}}printf("");}//数制转换函数intNinputlegality(){charstr1[100];//数组str存放输入的字符,以便判断输入是否有误inti;gets(str1);for(i=0;str1[i]!='';i++){if((st

7、r1[i]>57)

8、

9、(str1[i]<48)){return(0);break;}else{N=atoi(str1);//输入无误时,字符数组转换为十进制数Nreturn(1);}}}//判断十进制数N输入是否合法intRinputlegality(){charstr2[100];inti;gets(str2);for(i=0;str2[i]!='';i++){if((str2[i]>57)

10、

11、(str2[i]<48)){return(0);break;}else{R=atoi(str2);//输入无误时,字符数组转换为进制数Rre

12、turn(1);}}}//判断进制数r输入是否合法voidmain(){inte,p,q;SqStackS;InitStack(S);m:printf("请输入十进制整数N:");p=Ninp

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。