写一个函数,实现一个整形有序数组的二分查找{
//本质上arr是一个指针
int zhaoshu(int arr[], int a, int sz)
{
//算法的实现
int left = 0;
int right = sz - 1;
while (left <= right)
{
int mid = (left + right) / 2;//中间元素的下标
if (arr[mid] < a)
{
left = mid + 1;
}
else if (arr[mid] > a)
{
right = mid - 1;
}
else
{
return mid;
}
return -1;
}
}
int main()
{
//二分查找
//在一个有序数组中查找具体的某个数
//如果找到了返回,这个数的下标,找不到的返回-1
int arr[] = {1,2,3,4,5,6,7.8,9,10};
int a = 7;
int sz = sizeof(arr) / sizeof(arr[0]);
//传递过去的是数组arr首元素的地址
int ret = zhaoshu(arr, a, sz);
if (ret == -1)
{
printf("找不到这个数\n");
}
else
{
printf("找到了,这个数的下标是:%d\n", ret);
}
return 0;
}//最终打印出6
}
写一个函数,每调用一次这个函数,就会使num的值增加1{
void add(int* a)
{
(*a)++;
}
int main()
{
int num = 0;
add(&num);
printf("num = %d\n", num);//1
add(&num);
printf("num = %d\n", num);//2
add(&num);
printf("num = %d\n", num);//3
return 0;
}
}
函数的嵌套调用{
void newline()
{
printf("haha\n");
}
void twoline()
{
int a = 0;
for (a = 0; a< 2; a++)
{
newline();
}
}
int main()
{
twoline();
return 0;
}
}
函数的链式访问{
int main()
{
printf("%d", printf("%d", printf("%d",43)));
return 0;
}//打印出 4321
}