数制转换
发布时间:2020-12-14 22:55:10 所属栏目:大数据 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 #includestdio.h#includestdlib.h typedef int SElemType ;unsigned n;//非负整数int N;#define OK 1#define ERROR 0#define OVERFLOW 0#define STACK
以下代码由PHP站长网 52php.cn收集自互联网 现在PHP站长网小编把它分享给大家,仅供参考 #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 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<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);//弹出栈顶元素且赋值给e printf("%d",e); } printf("n"); } void main() { int y; char c; printf(" 1.输入一个十进制数nn 2.输入转换的进制mn 3.进制转换 n 4.继续否?(y/n?)n"); while(1) { printf("请选择1-4n"); 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 quitn"); scanf("%c",&c); if(c == 'n' || c == 'N') break; } else { printf("无效字符n"); } } } 以上内容由PHP站长网【52php.cn】收集整理供大家参考研究 如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |