进制转换
来源:互联网 发布:东华软件股份公司地址 编辑:程序博客网 时间:2024/04/30 00:47
题目描述
输入
输出
示例输入
7 223 12-4 3
示例输出
1111B-11
#include <stdio.h>#include <stdlib.h>#include<malloc.h>#define STACK_INIT_SIZE 100//存储空间初始分配量#define STACKINCREMENT 10 //存储空间分配增量#define OK 1#define OVERFLOW -1#define ERROR -2typedef char SElemType;typedef struct{ SElemType *base;//栈底指针 SElemType *top;//栈顶指针 int stacksize;} SqStack;
void InitStack(SqStack &S)// 构造一个空栈S{ S.base=(SElemType *)malloc(STACK_INIT_SIZE*sizeof(SElemType)); if(!S.base) exit(OVERFLOW);//存储分配失败 S.top=S.base; S.stacksize=STACK_INIT_SIZE;}
void 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) exit(OVERFLOW); // 存储分配失败 S.top=S.base+S.stacksize; S.stacksize+=STACKINCREMENT;//增加存储容量 } *S.top++=e;}
int Pop(SqStack &S,SElemType &e){ if(S.top==S.base) return ERROR; e=*--S.top; return OK;}
void conversion(SqStack &S,int n,int r)//将十进制数n转换为r进制数;{ char t; int h,flag=0; if(n==0)//判断n为0时; { printf("0"); } else { while(n) { if(n<0)//当n为负数时; { n=-n; flag=1;//标记是否将-进栈; } h=n%r; if(h<10&&h>=0) t=h+'0';//数字符的转换; else if(h>=10&&h<16) { switch(h-9) { case 1: t='A'; break; case 2: t='B'; break; case 3: t='C'; break; case 4: t='D'; break; case 5: t='E'; break; case 6: t='F'; break; } } n=n/r; Push(S,t);//进栈; } if(flag==1) Push(S,'-'); }}
void PutStack(SqStack &S)//栈内元素的输出;{ while(S.top>S.base) { S.top--; printf("%c",*S.top); } printf("\n");}
int main(){ int n;int r; while(~scanf("%d%d",&n,&r)) { SqStack S;//栈的定义; InitStack(S);//栈的初始化; conversion(S,n,r);//十进制n转化为r进制; PutStack(S);//栈元素的输出; } return 0;}
- 进制转换,类型转换
- 进制转换(进制转换)
- 进制转换-----十进制转换成二进制
- 进制的转换,八进制转换十六进制
- 进制转换,运算符,类型转换,
- 十进制转换2-9进制转换
- 进制转换
- 无限进制转换
- 进制转换
- 进制转换
- 进制转换
- 【整理】进制转换
- 进制转换
- 七、进制转换
- 进制转换
- 进制转换
- 进制转换
- NotesScript 进制转换
- git第一步——安装客户端
- 17 FileNameMatcher
- OJ系统使用方法
- XSS 与PHP
- C语言程序设计谭浩强版 十
- 进制转换
- Android通过Intent传递数据
- hadoop 2.x 伪分布式的配置
- 重装系统后有一个磁盘打不开,提示没有权限
- javascript-科学计算器
- Docker笔记 基础命令
- Ural 2037 Richness of binary words
- 10分钟弄懂Laravel重置密码重构
- 入门系列6.1打包 - 详解的build.gradle