1、首先,简单粗暴的方式如下:(以c语言十六进制与八进制为例)
#include <iosteam>
#ibclude <cstdio>
using namespace std;</cstdio></iosteam>

int main() {
int a = 0, b = 0;

scanf("%x %o", &a, &b);//分别以十六进制和八进制读入a b

printf("%d\n", a+b);//通过格式输出控制,直接输出a+b即可

return 0;//c++控制输出方式略有不同(以下是一些常用的函数:

  dec 置基数为10 相当于"%d"
  hex 置基数为16 相当于"%X"
  oct 置基数为8 相当于"%o"
  setfill(c) 设填充字符为c
  setprecision(n) 设显示小数精度为n位
  setw(n) 设域宽为n个字府
  setiosflags(ios::fixed) 固定的浮点数
  setiosflags(ios::scientific) 指数表示
  setiosflags(ios::left) 左对齐
  setiosflags(ios::right) 右对齐
  setiosflags(ios::skipws 忽略前导空白
  setiosflags(ios::uppercase) 16进制数大写输出
  setiosflags(ios::lowercase) 16进制小写输出
......

}
2、编写程序实现进制转换:(思路)
首先,因十六进制包含“A~E”五个字母,所以在读入十六进制数的时候选用char ch[]="a";或者使用STL成员函数string;
再者,遍历数组或string得到其具***数,再将整个读入数据一起传入函数fun16()和fun8();这两个函数为进制转换的函数(自己编写)。
最后,结合相应位权值返回一个sum;
注意点:1,数组越界溢出(解决方法建议使用string或扩大数组容量);
2,任何进制的最低位的位权值为x(具体数值)*Y(位权值的“0”次方!);
3,注意结合题目要求开 long long 接受返回值;
以上就是个人觉得需要注意的地方了吧。多有不足,渴望得到指教!
(c++输出控制参考链接说明