阅读以下程序,写出运行结果:
#include <stdio.h>
int main() {
int i = 0;
do {
printf("%d", i);
} while(i++);
printf("%d\n", i);
return 0;
}
运行结果:
01
解析:这是一个典型的do...while循环使用i++在每次循环后自增,但初始值0在条件判断时变为1。
程序功能:计算二进制中1的个数。请补充完整代码:
#include <stdio.h>
int main() {
unsigned int V = 7;
int num = 0;
while(V) {
V &= (V - 1);
num++;
}
printf("num=%d", num);
return 0;
}
提示:此程序使用位运算计算二进制中1的个数
运行结果:
num=3
解析:数字7的二进制是111,有三个1。程序通过V &= (V - 1)每次消除一个二进制最低位的1。
程序功能:使用二分查找在数组中查找元素。请补充完整代码:
#include <stdio.h>
int binarySearch(int lib[], int bound, int value) {
int lowKey = 0, highKey = bound - 1;
while(lowKey <= highKey) {
int midKey =________1________;
int midValue = lib[midKey];
if(midValue < value) {
________2________
} else if(midValue > value) {
highKey = midKey - 1;
} else {
return midKey;
}
}
return -1;
}
int main() {
int lib[] = {2, 4, 6, 8, 10, 12, 14, 16, 18, 20};
int n = sizeof(lib) / sizeof(int);
int value = 12;
int result = binarySearch(lib, n, value);
if(________3________) {
printf("元素 %d 在数组中的位置是 %d\n", value, result);
} else {
printf("元素 %d 不存在于数组中\n", value);
}
return 0;
}
运行结果:
元素 12 在数组中的位置是 5
解析:此程序使用while循环实现了二分查找算法,在有序数组中查找指定元素的位置。