#include

#include

typedef int SElemType ;

unsigned n;//非负整数

int N;

#define OK 1

#define ERROR 0

#define OVERFLOW 0

#define STACKINCREMENT 1

#define STACK_INIT_SIZE 10

typedef int Status;

typedef struct{

SElemType *base;

SElemType *top;

int stacksize;

}SqStack;

//此处需引入顺序栈存储结构及其基本操作

Status InitStack(SqStack &S)

{

//为栈分配一个指定大小的存储空间

S.base=(SElemType*)malloc(STACK_INIT_SIZE*sizeof(SElemType));

if(!S.base)

return ERROR;//存储分配失败

S.top=S.base;//栈底与栈顶相同表示一个空栈

S.stacksize=STACK_INIT_SIZE;

return OK;

}

Status StackEmpty(SqStack S)

{

//若栈S为空栈(栈顶与栈底相同),则返回OK,否则返回ERROR

if(S.top==S.base)

return OK;

else

return ERROR;

}

Status Push(SqStack &S,SElemType e)

{

//插入元素e为新的栈顶元素

if(S.top-S.base>=S.stacksize)//栈满,追加存储空间

{

S.base=(SElemType*)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(SElemType));

if(!S.base)

return ERROR;

S.top=S.base+S.stacksize;

S.stacksize+=STACKINCREMENT;

}

*S.top++=e;//这个等式的++*优先级相同,但是它们的运算方式,是自右向左

return OK;

}

Status GetTop(SqStack S,SElemType *e)

{

if(S.base

{

*e=*(S.top-1);

return OK;

}

else return ERROR;

}

Status Pop(SqStack &S,SElemType &b)

{

//若栈不空,则删除S的栈顶元素,用e返回其值,并返回OK,否则返回ERROR

if(S.top==S.base)

return ERROR;

b = * --S.top;//这个等式的--*优先级相同,但是它们的运算方式,是自右向左

return OK;

}

Status StackTraverse(SqStack S,int(*visit)(SElemType))

{

while(S.top>S.base)

{

visit(*S.base);

S.base++;

}

printf("\n");

return OK;

}

Status visit(SElemType c)

{

printf("%d", c);

return OK;

}

void conversion()

{

//对于输入任意一个非负十进制整数,打印输出与其等值的N进制数

SqStack s;

SElemType e;

InitStack(s);//初始化栈

while(n)//当n不等于0

{

Push(s,n%N);//压入n除以N的余数(N进制的低位)

n=n/N;

}

printf("转换后的数值为:");

while(!StackEmpty(s))

{

Pop(s,e);//弹出栈顶元素且赋值给e

printf("%d",e);

}

printf("\n");

}

void main()

{

int y;

char c;

printf(" 1.输入一个十进制数n\n 2.输入转换的进制m\n 3.进制转换 \n 4.继续否?(y/n?)\n");

while(1)

{

printf("请选择1-4\n");

scanf("%d",&y);

if(y==1)

{

printf("输入一个十进制数\n");

scanf("%d", &n);

}else

if(y==2)

{

printf("输入转换的进制\n");

scanf("%d", &N);

}else

if(y==3)

{

printf("进制转换\n");

conversion();

}else

if(y==4)

{

printf("请输入y or Y to continue or n or N to quit\n");

scanf("%c",&c);

if(c == 'n' || c == 'N')

break;

}

else

{

printf("无效字符\n");

}

}

}

c语言数制转换程序,数制转换(C语言实现)相关推荐

  1. c语言不通类型指针转换,C语言之强制类型转换与指针--#define DIR *((volatile unsigned int *) 0x0022)...

    强制类型转换形式:(类型说明符) (表达式) 举例说明:1) int a; a = (int)1.9; 2)char *b; int *p; p = (int *) b; //将b的值强制转换为指向整 ...

  2. c语言用栈编写数制转换程序,数制转换-栈的应用(C++实现)

    本程序实现的是十进制与不同进制之间的的数据转换,利用的数据结构是栈,基本数学方法辗转相除法. conversion.h #include using namespace std; //将十进制的数据n ...

  3. c语言验证算术类转换,C语言的强制转换你会用吗?

    C语从开发到现在一直都出现在人们的视野中,因为C语言不仅是许多编译语言开发的基础,它还是许多初学者第一个接触编程所用的语言.就连java之父也曾经说过C语言有太多令人觉得美妙的地方.可见C语言对于编程 ...

  4. c 语言八进制与十进制转换,C 语言进制之间的转换

    二进制.八进制和十六进制向十进制转换都是非常容易的,就是"按权相加". 所谓"权",也即"位权".例如,十进制第1位的位权为100=1,第2 ...

  5. 单片机C语言计算热电偶,热电偶转换C语言程序.pdf

    #include #include #define ERROR -100 #define uchar unsigned char float tmp = 0; // S 型温度转电压系数 float ...

  6. N型热电偶检测温度c语言程序,常用热电偶转换C语言程序源码.doc

    PAGE PAGE 1 #include#include #define ERROR -100#define uchar unsigned char float tmp = 0; // S型温度转电压 ...

  7. 数制转换c语言编程,C语言数据结构中数制转换实例代码

    C语言数据结构中数制转换实例代码 数制转换是严蔚敏的数据结构那本书中的例子,但是那本书中的例子大都是用伪代码的形式写的,不是很容易理解和实现,对初学者造成了不小的困扰,在这里我们将其详尽的实现出来,以 ...

  8. 数据结构c语言进制转换八进制,C语言数据结构中数制转换实例代码

    C语言数据结构中数制转换实例代码 数制转换是严蔚敏的数据结构那本书中的例子,但是那本书中的例子大都是用伪代码的形式写的,不是很容易理解和实现,对初学者造成了不小的困扰,在这里我们将其详尽的实现出来,以 ...

  9. C语言笔记:数制与进制(数制)之间转换问题

    文章目录 简介 进制的基本概念 二进制.八进制.十六进制加减法的区别 二进制 八进制 十六进制 数制之间的转换 情景一.将二进制.八进制.十六进制转换为十进制(总结:按权相加) 整数部分(不带小数) ...

最新文章

  1. MyBatis+Spring整合
  2. NSString/NSMutable字符串——韩俊强…
  3. 实现canvas连线
  4. python新手如何度过小白期,不再当菜鸟程序员?
  5. python返回长度值_Python 文件 truncate() 方法(截断返回截取长度)
  6. xp系统debugger用户_xp系统BIOS恢复出厂设置开机需按F1的具体步骤--win10专业版
  7. 【BZOJ4300】绝世好题,位运算相关DP
  8. ubuntu 学习笔记2--安装tomcat
  9. Visio 不能使用方向键移动图形的解决办法
  10. SLAM会议笔记(三)V-LOAM
  11. 动态的显示当前的时间---setInterval的用法
  12. UIAlertView 弹框
  13. 鼠标被计算机无法识别怎么办,win7系统usb鼠标无法识别怎么解决 电脑usb鼠标无法识别解决方法...
  14. 广数系统u盘支持什么格式_数控车床编程导入u盘 数控车床u盘读不出来
  15. SRGAN——使用与超分辨率重建的GAN
  16. win10计算机内存,win10系统电脑怎么升级内存?win10系统升级内存的方法
  17. STM32八路ADC采用DMA方式
  18. 复旦非全日制研究生计算机,信息整合!复旦大学非全日制研究生招生详情
  19. Android手机teams,在iOS和Android上自定义Microsoft Teams体验的三种最佳方法
  20. Fabric中的私有数据

热门文章

  1. Gson解析空字符串异常的处理
  2. python 的 int() 函数
  3. uniapp项目 mac连接安卓手机无法启动
  4. php手册3.1,thinkphp3.1手册下载|
  5. 服务器硬盘用在硬盘录像机,网络硬盘录像机是干什么用的
  6. uni-app 实现语音播放实现思路和代码
  7. 数据库设计 - 01外卖配送系统
  8. 深度linux打不开了,深度社区严重打不开
  9. h5倒计时弹窗_H5活动开始/结束倒计时实现
  10. 测试手机是否降频软件,如何检测自己的iPhone是否被苹果降频 降频的处理方法有哪些...