实验目的:
使用堆栈的存储结构实现数制转换,如10进制->2进制等 实验思路:
1、 写出堆栈的相关操作函数,如:
创建【int InitStack( SqStack *S )】、 压入【int Push(SqStack *S,int e)】、 弹出【int Pop(SqStack *S,int *e)】、 销毁【void DestroyStack(SqStack *S)】、
判断是否为空【int StackEmpty(SqStack *S)】等。
2、 堆栈的各操作函数完成后编写功能函数——数制转换【void
changeNumber(int *num,int to)】。
3、 数制转换函数之后编写主函数,使用上述函数实现数制转换的功能
核心代码:
1、 数制转换函数:
void changeNumber(int *num,int to){ int result[100],yu,e,m,i=0,j=0; //result[]是转换后的结果,yu是取余的结果 SqStack S; for(m=0;m<100;m++){ result[m]='#'; } InitStack(&S); while(*num!=0){ yu=*num%to; Push(&S,yu); *num=*num/to; } while(!StackEmpty(&S)){ Pop(&S,&e); result[i]=e; i++; } while(1){ printf(\"%d\ j++; if(result[j]=='#'){ printf(\"\\n\"); break; } } DestroyStack(&S);
}
2、 主函数: int main(){ int *p,num,to; int ok; while(1){ printf(\"您想转换的数字是:\"); scanf(\"%d\ printf(\"转换成多少进制:\"); scanf(\"%d\ p=# changeNumber(p,to); while(1){ printf(\"继续请按1,退出请按0...\"); scanf(\"%d\ if(ok!=0 && ok!=1){ printf(\"抱歉,您的输入有误,\"); }else if(ok==0 || ok==1){ break; } } if(ok==0){ break; } }
system(\"pause\"); return 1; }
功能演示:
1、 运行执行文件,进入dos窗口后可见提示:“您想转换的数字是:” 2、 输入:“1000”,回车后可见提示:“转换成多少进制:” 3、 输入:“6”,回车,得到结果:“4344”,又见提示:“继续请按1,退出请按0...”
4、 输入0退出
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- huatuo0.com 版权所有 湘ICP备2023021991号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务