继之前博文的补充(求整数位数,正序逆序输出,总计1的个数)https://blog.csdn.net/TUJI67/article/details/80381306
//todo 求1,2,3,4...总共出现1的个数 例如n=12(1,10,11,12),返回5个
//从1开始除以10取余,若余数为1,计数器加一,直到n取余为0结束,返回计时器即为所求。
int CountAlldOne(int n)
{
int count = 0;
int i,j;
for(i = 1,j = i;i <= n;) //i表示当前循环的次数,j表示当前操作的数
{
while(j != 0)
{
if(j%10 == 1)
{
count++;
}
j/=10;
}
i++;
j = i;//每次j操作完后都变为0,需要i重新赋值
}
return count;
}//统计数字的二进制中1的个数 例如8->1,5->2,11->3 int Bits(int n)
//将十进制数转换为二进制数,再用以上求所有1的方法求
int CountAllbOne(int n)
{
int count = 0;
int b[32]; //b[32] 表示整型的4字节(即32位,模拟二进制)
int t=0;
while(n != 0) //统计转为二进制后有几位,并给每一位赋值
{
{
b[t]=n % 2;
n /= 2;
t++;
}
}
int i = 0;
while(i < t)
{
count += (b[i] % 10 == 1) ? 1:0; //统计有几个1
i++;
}
return count;
}//统计数字的二进制中1的个数
int CountAllbOne(int n)
{
int count = 0;
int b[32];
int t=0;
while(n != 0)
{
b[t] = n%2;
n /= 2;
if(b[t] == 1) //在将整数转为二进制时,直接判断每一位是否为1,是1计数器count就加一
{
count += 1;
}
t++;
}
return count;
}
版权声明:本文为TUJI67原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。