#include <stdio.h>
#include <stdlib.h>
int main()
{
int binsearch(int x,int v[],int n);
int array[10] = {0,1,2,3,4,5,6,7,8,9};
printf("%d",binsearch(7,array,10));
return 0;
}
//else if 语句的应用
//这里采用了折半查找算法,注,数组array必须是升序排列
int binsearch(int x,int v[],int n)
{
int low,high,mid;
low = 0;
high = n -1;
while(low <= high)
{
mid = (low + high) / 2;
if(x < v[mid])
high = mid - 1;
else if (x > v[mid])
low = mid + 1;
else
return mid;
}
return -1;
}
在K&R the c programming 书中有这样一句话else if语句中,最后一个else部分用于处理“上述条件均不成立”的情况或默认情况,也就是当上面各条件都不满足时的情形。有时候并不需要针对默认情况执行显示的操作,这种情况下,把该结构末尾的else语句部分省略掉。为了验证这句话,我特意做了如下调试:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int test(int num);
test(5);
return 0;
}
int test(int num)
{
if(num > 5)
return 1;
else if(num < 5)
return -1;
else if(num == 5)
return 0;
}
程序返回一个warning:control reaches end of non-void function。它的意思是:控制到达非void函数的结尾。就是说你的一些本应带有返回值的函数到达结尾后可能并没有返回任何值。这时候,最好检查一下是否每个控制流都会有返回值。