#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的个数
}
c语言对于给定的十进制整数N(N<10000),将1到N(含N)之间的每个整数转成二进制……(遇到一个题,我写了一段代码,但怎么也编译不出来,不知道哪里错了,萌新求大神指教!)
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
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; }解决 无用评论 打赏 举报
