进制A+B [牛客网]
- 1.题目
 - 2.分析
 - 3.代码
 
- 方法1:scanf %o %x
 - 方法2:stringstream
 
- 4.总结
 - 5.更新日志
 
1.题目
题目链接
题目描述
输入一个十六进制数a,和一个八进制数b,输出a+b的十进制结果(范围-231 ~ 231-1)。
输入描述:
 一行,一个十六进制数a,和一个八进制数b,中间间隔一个空格。
 输出描述:
 一行,a+b的十进制结果。
示例1
 输入
 0x12 05
 输出
 23
备注:
 十六进制Hexadecimal一般以0x开头,例如0xFF。
 八进制Octal,一般以0开头,例如07。
2.分析
学会使用scanf
3.代码
方法1:scanf %o %x
#include <iostream>
using namespace std;
int main()
{
int a,b;
scanf("%x%o",&a,&b);
cout<<a+b;
return 0;
}
![在这里插入图片描述 进制A+B [牛客网]_进制](https://file.cfanz.cn/uploads/png/2022/07/30/16/W2V6ZM2a39.png)
方法2:stringstream
#include <iostream>
using namespace std;
#include <sstream>
int main()
{
string s;
int res=0;
int t;
stringstream s1;
cin>>s;
s1<<hex<<s; //16进制读入
s1>>t; //转换为10进制
res+=t;
stringstream s2; //s1未清空,所以再重建一个stringstream
cin>>s;
s2<<oct<<s; //8进制读入
s2>>t; //转换为10进制
res+=t;
cout<<res;
return 0;
}
![在这里插入图片描述 进制A+B [牛客网]_进制_02](https://file.cfanz.cn/uploads/png/2022/07/30/16/fXQf1145fc.png)
4.总结
灵活使用scanf
5.更新日志
2022.7.26
欢迎交流、讨论、指正~
 不正确、不理解之处欢迎评论留言~
                










