求各位看一下这个为什么老报错
题目要求:输入一个非负整数n,输出0<=i<=n的所有数字的二进制中的1的个数,例如:5
0,1,1,2,1,2
以下是我的代码:
#include<stdio.h>
#include<stdlib.h>
int main()
{
int i,n,m,a,b;
char sum[1000],num[1000];
scanf("%d",&i);
for(n=0;n<=i;n++)
{
if(n==0)
printf("0");
else
for(m=0;;m++)
{
sum[m]=n/2;
num[m]=n%2;
n=n/2;
if(sum[m]==0&&num[m]==1)//当商为0且余数为1时。
for(b=0,a=0;a<m;a++)//这一块总是报错。
{
if(num[a]=1)
b=b+1;
else
b=b;
}
printf("%d",b);
}
}
printf("\n");
system("pause");
return 0;
}