第六周—项目4 - 数制转换

来源:互联网 发布:固态硬盘优化 编辑:程序博客网 时间:2024/04/28 21:49

问题及代码:

/*  *Copyright(c)2015,烟台大学计算机与控制工程学院  *All right reserved.  *文件名称:main.cpp  *作者:程昂  *完成日期;2015年10月5日  *版本号;v1.0  *  *问题描述:把十进制的整数转换为任一进制数输出。  *程序输出: 任一进制数*/  #include <stdio.h>#include "listack.h"void MultiBaseOutput (int number,int base){    //假设number是非负的十进制整数,输出等值的base进制数    int i;    LiStack *S;    InitStack(S);    while(number)   //从右向左产生base进制的各位数字,并将其进栈    {        Push(S,number%base); //将将余数进栈        number/=base;    }    while(!StackEmpty(S))   //栈非空时退栈输出    {        Pop(S, i);        printf("%d",i);    }}int main(){    MultiBaseOutput(10, 2);    return 0;}


输出及结果:


问题分析:

通过进制的转换方法可以知道,该算法需要不停的除以base(及要转换成的进制)并将每一步的余数记录下来,当进行完时,再逆序写下来,正好符合了栈的先进后出
的性质。

0 0
原创粉丝点击