数制转换

数制转换,第1张

概述数制转换

下面是内存溢出 jb51.cc 通过网络收集整理的代码片段。

内存溢出小编现在分享给大家,也给大家做个参考。

#include<stdio.h>#include<stdlib.h> typedef int SElemType ;unsigned n;//非负整数int N;#define OK 1#define ERROR 0#define OVERFLOW 0#define STACKINCREMENT 1#define STACK_INIT_SIZE 10typedef 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<S.top) {  *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);//d出栈顶元素且赋值给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");     } }}

以上是内存溢出(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

总结

以上是内存溢出为你收集整理的数制转换全部内容,希望文章能够帮你解决数制转换所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1277905.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-09
下一篇 2022-06-09

发表评论

登录后才能评论

评论列表(0条)

保存