您好,你这道题是八进制转十进制吗,可以按我的步骤试一试。
8进制转10进制的方法是:按权展开后相加
什么意思呢?就是把这个八进制数看成一个字符串,将他的每一位拆出来,然后从最低位到最高位依次乘上8的零次方,8的一次方,8的二次方……以此类推。
这个转换可以用子程序来实现,当然,你也可以直接放在主函数里面。
代码:
#include<bits/stdc++.h>
using namespace std;
long long T_D(string s,int x){
long long sum=0,w=1;
for(int i=s.size()-1;i>=0;i--){
if(s[i]>='0'&&s[i]<='9')sum+=(s[i]-'0')*w;
else sum+=(s[i]-'A'+10)*w;
w*=x;
}
return sum;
}
int main()
{
string s;
cin>>s;
cout<<s<<"(8)="<<T_D(s,8)<<"(10)";
return 0;
}
你的题目的样例也过了,应该没什么问题。
八进制转换不是这么玩的啊。要循环除以8