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;
}
方法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;
}
4.总结
灵活使用scanf
5.更新日志
2022.7.26
欢迎交流、讨论、指正~
不正确、不理解之处欢迎评论留言~