欢迎来到天天文库
浏览记录
ID:48457422
大小:58.50 KB
页数:11页
时间:2020-02-01
《数据结构C语言实现之数制转换.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
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、给出注释详细的源程序,及其设计思想的描述;#include3、.h>#include#include#defineSTACK_INIT_SIZE1000#defineSTACKINCREMENT10#defineTRUE1#defineFALSE0#defineOK1#defineERROR0#defineOVERFLOW0typedefstruct{int*base;int*top;intstacksize;..}SqStack;//栈的顺序存储表示intN;//定义全局变量N,表示将要转换为R进制的十进制数intR;//定义全局变量R,表示进制数Rint4、InitStack(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.5、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;returnOK;}//进栈操作intPop(SqStack&S,int&e){if(S.top==S.base)returnERROR;e=*--S.top;returnOK;}//出栈操作..v6、oidconversion(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]!7、=' ';i++){if((str1[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)12、;//输入无误时,字符数组转换为进制数Rreturn(1);}}}//判断进制数r输入是否合法voidmain(){inte,p,q;SqStackS;InitStack(S);..m:printf("请输
3、.h>#include#include#defineSTACK_INIT_SIZE1000#defineSTACKINCREMENT10#defineTRUE1#defineFALSE0#defineOK1#defineERROR0#defineOVERFLOW0typedefstruct{int*base;int*top;intstacksize;..}SqStack;//栈的顺序存储表示intN;//定义全局变量N,表示将要转换为R进制的十进制数intR;//定义全局变量R,表示进制数Rint
4、InitStack(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.
5、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;returnOK;}//进栈操作intPop(SqStack&S,int&e){if(S.top==S.base)returnERROR;e=*--S.top;returnOK;}//出栈操作..v
6、oidconversion(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]!
7、=' ';i++){if((str1[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)
12、;//输入无误时,字符数组转换为进制数Rreturn(1);}}}//判断进制数r输入是否合法voidmain(){inte,p,q;SqStackS;InitStack(S);..m:printf("请输
此文档下载收益归作者所有