hdu oj 2031(十进制转为其他进制)

13 篇文章 0 订阅

题目:hdu oj 2031
思路和代码注释如下:

#include<iostream>
#include<stack>
using namespace std;

//十进制转换为2~16进制
//思路:1.用该数不断对目标进制不断求余,将余数保存,之后用商(取整)继续求余,直到商为0为止
//2.因为最后是逆序输出,所以很适合栈先进后出的访问规则,所以我就用了stl里的栈

int main()
{
    int num,n;
    stack<int> mystack;

    while (cin>>num>>n){
        if(num==0)
            cout<< n ; 
        else {
            if(num < 0){        //若为负数,将其转换为正数,并输出负号
                num = -num;         
                cout<< "-" ; 
            }
            while (num){
                mystack.push(num%n);    //余数入栈
                num/=n;                 //取整得到商
            }
            while (!mystack.empty()){
                if(mystack.top()<10)
                    cout<<mystack.top();               //小于10直接输出
                else 
                    cout<<(char)(mystack.top()-10+'A'); //大于10,转为字母,注意输出要转换为字符,不是ASCII码
                mystack.pop();
            }
        }
        cout<<"\n";
    }

    system("pause");
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值