输出的答案有误,请问是哪里写错了啊

img


img

#include <iostream>
#include <math.h>
using namespace std;
bool panduan(int i){//判断不含7 
    int b[100];
    int j=0;
    while(i){
        int ret=i%10;
        b[j]=ret;
        j++;
        i/=10;
    }
    for(int r=0;r<sizeof(b)-1;r++){
        if(b[r]==7)
        return false; 
    }
    return true;
}
int rbajinzhi(int i){//将十进制转换成八进制 
    int o=0;
    int j=0;
    int n=0;
    if(i<=7)
        o=i;
    else
    {
        while(i>7){ 
            j=i%8;
            i=i/8;
            o=j*pow(10,n)+o;
            n++;
        } 
    }
    o=o+i*pow(10,n);
    return o;
}
int main(){
    int N;
    cin>>N;
    int count=0;
    for(int i=1;i<=N;i++){
        if(panduan(i)||panduan(rbajinzhi(i))){
            count++;
        }
    }
    cout<<count;
    return 0;
}

不需要使用数组,在你的代码上改了改,一个函数判断十进制是否含7,一个函数判断八进制是否含7

#include <iostream>
#include <math.h>
using namespace std;
bool panduan(int i){//判断十进制不含7 
    while(i){
        if(i%10==7)
            return false;
        i/=10;
    }
    return true;
}
int rbajinzhi(int i){//判断八进制不含7 
    while(i){
        if(i%8==7)
            return false;
        i/=8;
    }
    return true;
}
int main(){
    int N;
    cin>>N;
    int count=0;
    for(int i=1;i<=N;i++){
        if(panduan(i)&&rbajinzhi(i)){
            count++;
        }
    }
    cout<<count;
    return 0;
}