第6周项目4 数制转换
2015-10-23 08:30
423 查看
问题及代码:
文件名称:main.cpp sqstack.cpp sqstack.h
作者:郑孚嘉
问题描述:把十进制的整数转换为二至九之间的任一进制数输出。请利用栈设计算法,并实现程序。
提示:要转换为r进制,则原来的数逐次除以基数r(除完之后用商再除),直到商为0,得到的一系列余数的逆序就是转换结果。这里的“逆序”,意味着后产生的余数,会先输出,后进先出,栈的机会来了……
代码:
main.cpp
sqstack.h
sqstack.cpp
运行结果:
知识点总结:
根据顺序栈的先进后出的原理可以解决数值转换的问题。
文件名称:main.cpp sqstack.cpp sqstack.h
作者:郑孚嘉
问题描述:把十进制的整数转换为二至九之间的任一进制数输出。请利用栈设计算法,并实现程序。
提示:要转换为r进制,则原来的数逐次除以基数r(除完之后用商再除),直到商为0,得到的一系列余数的逆序就是转换结果。这里的“逆序”,意味着后产生的余数,会先输出,后进先出,栈的机会来了……
代码:
main.cpp
#include <stdio.h> #include "sqstack.h" int main() { int x,jz,ys,s; printf("输入要转换的十进制数:\n"); scanf("%d",&x); printf("输入转换的进制:\n"); scanf("%d",&jz); s=x; SqStack *ysz; InitStack(ysz); while(s!=0) { ys=s%jz; s=s/jz; //printf("%d %d\n",ys,s); Push(ysz,ys); } DispStack(ysz); }
sqstack.h
#define MaxSize 100 typedef int ElemType; typedef struct { ElemType data[MaxSize]; int top; //栈指针 } SqStack; //顺序栈类型定义 void InitStack(SqStack *&s); //初始化栈 bool Push(SqStack *&s,ElemType e); //入栈 void DispStack(SqStack *s); //输出栈
sqstack.cpp
#include <stdio.h> #include <malloc.h> #include "sqstack.h" void InitStack(SqStack *&s) { s=(SqStack *)malloc(sizeof(SqStack)); s->top=-1; } bool Push(SqStack *&s,ElemType e) { if (s->top==MaxSize-1) //栈满的情况,即栈上溢出 return false; s->top++; s->data[s->top]=e; return true; } void DispStack(SqStack *s) //输出栈 { int i; for (i=7;i>=0;i--) printf("%d",s->data[i]); printf("\n"); }
运行结果:
知识点总结:
根据顺序栈的先进后出的原理可以解决数值转换的问题。
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- 关于指针的一些事情
- c++ primer 第五版 笔记前言
- share_ptr的几个注意点
- Lua中调用C++函数示例
- Lua和C语言的交互详解
- Lua教程(一):在C++中嵌入Lua脚本
- Lua教程(二):C++和Lua相互传递数据示例
- C++联合体转换成C#结构的实现方法
- 关于C语言中参数的传值问题
- 简要对比C语言中三个用于退出进程的函数
- 深入C++中API的问题详解
- 基于C语言string函数的详解
- C++编写简单的打靶游戏
- C++ 自定义控件的移植问题
- C语言中fchdir()函数和rewinddir()函数的使用详解
- C语言内存对齐实例详解
- C++变位词问题分析
- C/C++数据对齐详细解析
- C++基于栈实现铁轨问题