这道题没有想到还有这种解法,其实是书上的内容啊,看课本,看课本。在这引用一下各种进制的相关运算,填补了我一点空白。
#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进制输出表达式的结果。
输入
第一行输入一个正整数T(0<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;
}