nyoj244十六进制转换

来源:互联网 发布:淘宝的蚕丝被是真的吗 编辑:程序博客网 时间:2024/05/18 02:09

这道题没有想到还有这种解法,其实是书上的内容啊,看课本,看课本。在这引用一下各种进制的相关运算,填补了我一点空白。

#include <iostream>using namespace std ;int main(){    int i, j, k, l;    cout<<"Input i(oct), j(hex), k(hex), l(dec):"<<endl;    cin>>oct>>i; //输入为八进制数    cin>>hex>>j; //输入为十六进制数    cin>>k; //输入仍为十六进制数    cin>>dec>>l; //输入为十进制数    cout<<"hex:"<<"i="<<hex<<i<<endl;    cout<<"dec:"<<"j="<<dec<<j<<'\t'<<"k="<<k<<endl;    cout<<"oct:"<<"l="<<oct<<l;    cout<<dec<<endl; //恢复十进制输出状态    return 0;}【执行结果】:(1)输出提示:Input i(oct), j(hex), k(hex), l(dec):(2)此时从键盘输入: 032 0x3f 0xa0 17 <CR>(3)输出结果为:    hex:i=1a    dec:j=63    k=160    oct:l=21
描述    现在给你一个16进制的加减法的表达式,要求用8进制输出表达式的结果。输入    第一行输入一个正整数T0<T<100000)    接下来有T行,每行输入一个字符串s(长度小于15)字符串中有两个数和一个加号或者一个减号,且表达式合法并且所有运算的数都小于31位输出    每个表达式输出占一行,输出表达式8进制的结果。样例输入    3    29+4823    18be+6784    4ae1-3d6c样例输出    44114    100102    6565
#include<iostream>using namespace std;int main(){    int num;    cin>>num;    while(num--){        int i,j;        char k;        cin>>hex>>i>>k>>hex>>j;        cout<<i<<" "<<endl;        if(k=='-')cout<<oct<<i-j<<endl;        if(k=='+')cout<<oct<<i+j<<endl;    }    return 0;}