折半查找c语言递归(折半查找法c语言)

导读 大家好,我是小曜,我来为大家解答以上问题。折半查找c语言递归,折半查找法c语言很多人还不知道,现在让我们一起来看看吧!1、两个错误!2...

大家好,我是小曜,我来为大家解答以上问题。折半查找c语言递归,折半查找法c语言很多人还不知道,现在让我们一起来看看吧!

1、两个错误!

2、运行成功的代码:

3、#include <stdio.h>

4、#include <string.h>

5、main()

6、{

7、char name[10][10],a[10];

8、int num[10],i,j,min,t,max,mi,mid,x,flag=0;

9、for(i=0;i<10;i++)

10、{ printf("输入职工姓名 ");

11、scanf("%s",&name[i]);

12、printf("输入职工的工号 ");

13、scanf("%d",&num[i]);

14、}

15、for(i=0;i<=9;i++)

16、{min=i;

17、for(j=i;j<10;j++)

18、 if(num[j]<num[min])

19、 min=j;

20、 t=num[i];

21、 num[i]=num[min];

22、 num[min]=t;

23、 strcpy(a,name[i]);

24、 strcpy(name[i],name[min]);

25、 strcpy(name[min],a);

26、 }

27、for(i=0;i<10;i++)

28、 printf("%s,%d ",name[i],num[i]);

29、printf("输入你所要查找的那个职工号 ");

30、scanf("%d",&x);//scanf用法取地址符

31、max=9;

32、mi=0;

33、mid=(max+mi)/2;

34、for(i=0;i<=9;i++)//你这儿i=0没有,那么i在上一个for循环后值为9,压根没查找

35、{

36、 if(num[mid]==x)

37、 {flag=1;break;}

38、 if(num[mid]>x)

39、 max=mid,mid=(max+mi)/2;

40、 if (num[mid]<x)

41、 mi=mid,mid=(max+mi)/2;

42、}

43、if(flag)

44、puts(name[mid]);

45、else if(flag==0)

46、printf("error");

47、}

48、代码有完善的地方,我只是改了你两个错误。

本文到此讲解完毕了,希望对大家有帮助。

最新文章