要统计一个整数中0和1的个数,可以使用位运算的方法。以下是一个简单的方法:
```c
include
void count(int x) {
int count0 = 0, count1 = 0;
while (x) {
if (x % 10 == 1) {
count1++;
}
if (x % 10 == 0) {
count0++;
}
x = x / 10;
}
printf("1的个数为: %d\n", count1);
printf("0的个数为: %d\n", count0);
}
int main() {
int data;
printf("请输入一个整数: ");
scanf("%d", &data);
count(data);
return 0;
}
```
这个程序首先定义了一个`count`函数,该函数接受一个整数`x`作为参数。在函数内部,我们使用一个循环来逐位检查`x`的每一位。如果某一位是1,我们就增加`count1`的值;如果某一位是0,我们就增加`count0`的值。最后,我们打印出1和0的个数。
在`main`函数中,我们从用户那里获取一个整数,并调用`count`函数来统计1和0的个数。
这个方法的时间复杂度是O(log n),其中n是输入整数的位数。这是因为我们需要检查整数的每一位。