D_君悦君 2020-10-21 23:19 采纳率: 0%
浏览 249

c语言对于给定的十进制整数N(N<10000),将1到N(含N)之间的每个整数转成二进制……(遇到一个题,我写了一段代码,但怎么也编译不出来,不知道哪里错了,萌新求大神指教!)

图片说明

#include <iostream>
using namespace std;
int main()
{
    int N; //输入的整数
    int j = 0;
    int zero = 0;//零的个数
    cin >> N;
    int a[100];//存放1~N间的所有整数
    int b[100];//存放二进制中的1,0
    for (int i =1; i <= N; i++)//为数组赋值1~N
    {
        int t=0;
        a[t] = i;
        t++;
    }
    for (int i = 0; i < N; i++)//对1~N所有整数进行二进制转换
    {
        while (i<N)//二进制转换
        {
            b[j] = a[i] % 2;
            if (b[j] == 0) { zero++; }
            a[i] = a[i] / 2;
            j++;
        }
    }
    cout << zero << endl;//输出O的个数
}
  • 写回答

1条回答 默认 最新

  • 小学狗喵喵叫 2020-10-22 11:06
    关注

    可以取反后用&

    int main()
    {
        //零的个数
        int zero = 0;
        int N = 1;
        cin >> N;
        for (int i = 1; i <= N; i++) {
            int j = ~i;
            int tmp = 1;
            while (tmp <= i) {
                if (j & tmp)
                    zero++;
                tmp <<= 1;
            }
        }
        cout << zero << endl;//输出0的个数
        return 1;
    }
    
    评论

报告相同问题?