c++输入一个数转换成二进制码流,如若码流中有五个连续的1则填入一个0

c++输入一个数转换成二进制码流,如若码流中有五个连续的1则填入一个0

可以参考一下

#include <cstdio>

using namespace std;

char *convert(int n){
    char *ans = new char[100]{0};
    char stk[100];
    int top = -1;
    int k=0;
    while(n!=0){
        if(n&1){
            k++;
            if(k%5!=0) stk[++top] = '1';
            else{
                stk[++top] = '1';
                stk[++top] = '0';
            }
        } else {
            k = 0;
            stk[++top] = '0';
        }
        n>>=1;
    }
    
    for(int i=0; top!=-1; i++){
        ans[i] = stk[top--];
    }
    
    return ans;
}

int main(){
//    int n = 180159;
    int n;
    scanf("%d", &n);
    char *ans = convert(n);
    printf("%s", ans);
    return 0;
}
不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^