进制转换
来源:互联网 发布:密码算法库 编辑:程序博客网 时间:2024/06/05 02:59
进制转换
Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^
题目描述
输入一个十进制数N,将它转换成R进制数输出。
输入
输入数据包含多个测试实例,每个测试实例包含两个整数N(32位整数)和R(2<=R<=16, R != 10)。
输出
为每个测试实例输出转换后的数,每个输出占一行。如果R大于10,则对应的数字规则参考16进制(比如,10用A表示,等等)。
示例输入
7 223 12-4 3
示例输出
1111B-11
#include <stdio.h>
#include <stdlib.h>typedef struct {
int *base;
int *top;
int Lsize;
}Sqstack;
Sqstack push(Sqstack &s,int e){
*s.top++=e;
}
int pop(Sqstack &s,int &a){
if(s.top==s.base)return -1;
s.top--;a=*s.top ; return a ;
}
int Empty(Sqstack &s){
if(s.top==s.base) return 0;
else return 1;
}
char clearstack(Sqstack &s){
s.top=s.base;
}
int main(){
int n,m,e;
Sqstack S;
while (scanf("%d%d",&n,&m)!=EOF){
int flag=0; //flag每次都要清零。
S.base=(int *)malloc(1010*sizeof(int));
S.top=S.base;
if(n==0) {printf("0");}
else while(n){
if(n<0) {n=-n; flag=1;}
push(S,n%m);
n=n/m;
}
if(flag==1) printf("-");
while (Empty(S)){
e=pop(S,e);
if(e==10) { printf("A");}
else if(e==11) { printf("B");}
else if(e==12) { printf("C");}
else if(e==13) { printf("D");}
else if(e==14) { printf("E");}
else if(e==15) { printf("F");}
else printf("%d",e);
}
printf("\n");
clearstack(S);
}
}
注意考虑 0,负数,还有ABCDEF的表示
0 0
- 进制转换,类型转换
- 进制转换(进制转换)
- 进制转换-----十进制转换成二进制
- 进制的转换,八进制转换十六进制
- 进制转换,运算符,类型转换,
- 十进制转换2-9进制转换
- 进制转换
- 无限进制转换
- 进制转换
- 进制转换
- 进制转换
- 【整理】进制转换
- 进制转换
- 七、进制转换
- 进制转换
- 进制转换
- 进制转换
- NotesScript 进制转换
- 关于负数的isdigit()判断
- c++ primer 读书笔记第五章:语句
- 填上浏览器跳转app-webview,app没有接收跳转url的查询参数的坑
- 进制转换
- 【多线程】线程池
- 进制转换
- Android studio 中 try catch 与 finally的比较常见的用法
- RemoteViews
- 2016 Multi-University Training Contest 5 题解
- VS C# 命名空间 “ ”中不存在类型或命名空间名称 “ ” 。是否缺少程序集引用?
- 表格标签
- Hdu 5785 Interesting(给你一个字符串,你可以选择这个字符串的一个子串,记为s[l...r] 你可以选择一个k(i<=k< j)将这个子串划分成两半,如果这两半都是回文串,那么答案)
- hdu-2141-Can you find it?
- PHP Lumen - 入门教程 - hello world