#include "stdafx.h"
#include<stdio.h>
void increase(int a[],int n)
{
int time = 1,k,j;
for (time = 1; time <= 16; time++) //输出加16次的过程
{
int i = 0;
while (i < n && a[i] == 1) //现在这一个位置的数字是1,需要变成0,然后产生一个进位
{
a[i] = 0;
i++;
}
if (i < n)
a[i] = 1; //把进位的地方变成1,或者把原来的0变成1
for (j = n-1; j >= 0; j--)
{
if (a[j] == 1)
{
k = j;
break;
} //j应该等于从后往前的第一个1,刚找到那个1就要break,不然会得到最后一个1
}
printf("\n第%d次加1的结果:", time);
while (k >= 0)
{
printf("%d ", a[k]);
k--;
}
}
}
int main()
{
int a[8] = { 0,0,0,0,0,0,0,0 };
int n = sizeof(a) / sizeof(int);
increase(a, n);
return 0;
}
聚集操作二进制计数器递增1
最新推荐文章于 2024-03-29 13:27:48 发布