进制转换2

来源:互联网 发布:驱老鼠超声波软件 编辑:程序博客网 时间:2024/05/16 00:57

进制转换

Time Limit: 1000MS Memory Limit: 65536KB

Problem Description

输入一个十进制数N,将它转换成R进制数输出。

Input

输入数据包含多个测试实例,每个测试实例包含两个整数N(32位整数)和R(2<=R<=16, R != 10)。

Output

为每个测试实例输出转换后的数,每个输出占一行。如果R大于10,则对应的数字规则参考16进制(比如,10用A表示,等等)。

Example Input

7 223 12-4 3

Example Output

1111B-11
//进制转换2#include<iostream>#include<cstdio>#include<stdlib.h>using namespace std;const int maxsize=100;class Stack{    int StackList[maxsize];int top;public:Stack();bool isFull();bool isEmpty();void Push(int e);int Pop();void Clear();};Stack::Stack(){    top=-1;}bool Stack::isEmpty(){   if(top==-1)  return true;   else  return false;}bool Stack::isFull(){    if(top==maxsize-1)  return true;else return false;}void Stack::Push(int e){    if(isFull())  exit(0);StackList[++top]=e;}int Stack::Pop(){        if(isEmpty())   exit(0);return StackList[top--];}void Stack::Clear(){    top=-1;}int main(){int n,m;while(cin>>n>>m){    if(n==0)           //注意到为0的时候cout<<"0"<<endl;else{Stack s;Stack();int flag=0;if(n<0) { flag=1;n=-n;}while(n){    s.Push(n%m);n=n/m;}int t;if(flag==1)cout<<"-";while(!s.isEmpty()){     t=s.Pop(); if(t<=9)   cout<<t; else   printf("%c",t-10+'A');     //转换成字符}cout<<endl;s.Clear();}}    return 0;}


原创粉丝点击