c语言,刚学没多久,请问是哪部错了啊

img

img


如上,代码打出来有点不一样,还是发图片吧,。?!%12345675665388*(凑字数)

您好,你这道题是八进制转十进制吗,可以按我的步骤试一试。
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;
}


你的题目的样例也过了,应该没什么问题。

img

八进制转换不是这么玩的啊。要循环除以8