c语言程序问题,求解释,看不得呀,主要的是后面的if和else看不懂,求大侠!!!!!!!!!

c语言程序问题,求解释,看不得呀,主要的是后面的if和else看不懂,求大侠!!!!!!!!!,第1张

#include<stdio.h>

int main()

{ int a[15]={15,14,13,12,11,10,9,8,7,6,5,4,3,2,1}

int key,mid,star=0,end=15-1

printf("enter a look for number:\n")

scanf ("拆岁举%d",&key)

if(key>a[0]||key<a[end])

{ printf("无此数\n"雀纯)} 这句话是判断输入的数字是否在这个数组数字的范围1-15之内,不在则直接无此数,当在那个范围之内时,就继续执行下面的语句

else

{ while(star<=end) 这句话中start,end是数组的下标,start是第一个数的下标,end是最后一个数

{ mid = (star+end)/2 mid取数组最中间的那个数字的下标

if(key==a[mid]) { printf("这个数在第%d\n",mid)break} 判断那个数是否就是要寻找的数字

如果是的话,就直接跳出循环,不是的话 ,继续向下执行

else if(key>a[mid]) {end=mid-1} 判断寻找的那个数key是否大于数组最中间的那个数,由于数组事先是一个递减的有序数组,如果大于中间的那个数,则把寻找范围的旅碧下限end变为mid-1,即把下标为mid的数组的数字的左边那个数字的下标赋给end

else {star=mid+1} }判断寻找的那个数key是否小于数组最中间的那个数,由于数组事先是一个递减的有序数组,如果小于中间的那个数,则把寻找范围的下限start变为mid+1,即把下标为mid的数组的数字的右边那个数字的下标赋给start

if(star>end) 这个if语言判断上面的while循环是如何结束的

{ printf("无此数\n")}如果没有找到要寻找的那个数字,while的结束条件是start 大于end,则该条件满足,输出:无此数

如果找到了要寻找的那个数字,while中start 肯定是小于等于end的,则该语句不执行

}

}

大体就是这个样子~

#include <stdio.h>

int search(int arr[],int len,int num)//arr为序列,len为序列长携森度,num为咐早要查找的数

{

int start,end,mid

start=0

end=len-1

mid=(start+end)/2

while(start<=end)

{

if(arr[mid]>num)

{

end=mid-1

mid=(start+end)/2

continue

}

if(arr[mid]<num)

{

start=mid+1

mid=(start+end)/2

continue

}

return mid+1

}

return -1

}

int main()

{

int a[100],i,m,num,pos

printf("输入序列长度:")

scanf("%d",&m)

printf("输入一个长度为%d的有序序列:\n",m)

for(i=0i<mi++)

{

scanf("%d",&a[i])

}

printf("输入你要查找的数:")

scanf("%d",&num)

pos=search(a,m,num)

if(pos==-1)

printf("未能在序列中找到你要查找的数。\n")

else

printf("你衡隐雀要查找的数在第%d个位置\n",pos)

return 0

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12451239.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存