给定一个按升序排列的15个整数的数组,从键盘输入一个整数,使用折半查找法确定该数在数组中的位置。若该数不存在,则输出"查无此数"。
C语言程序如下:
#include <stdio.h>
int main()//主函数
{
int array[15]={0,2,4,6,8,10,12,14,16,18,20,22,24,26,28};//数组初始化
int lef=0,rig=14,mid=(lef+rig)/2;//定义变量lef,rig,mid存储数组下标(左、中,右)
int a;//存储从键盘输入的数
int i;//定义变量i:循环变量
_Bool flag=0;//定义判断标志
printf("输出原数组:");
for(i=0;i<15;i++) printf("%d ",array[i]);
printf("\n请输入一个整数:");
scanf("%d",&a);
if(a<array[lef]||a>array[rig]) flag=1;//当输入的数a,不在范围内,判断标志置1
while(flag!=1)
{
if(a>array[mid]) lef=mid+1;//左下标向右逼近
else rig=mid;//右下标向左逼近
if(lef==rig)//逼近至某点
{
if(a==array[lef]) break;
else flag=1;//查无此数,标志置1
}
else mid=(lef+rig)/2;//继续逼近
}
if(flag==0) printf("%d是第%d个元素",a,lef+1);
else printf("查无此数");
return 0;
程序运行结果如下:


请各位大佬批评指正!!!
1720

被折叠的 条评论
为什么被折叠?



