程序员在旅途

用这生命中的每一秒,给自己一个不后悔的未来!

0%

用折半查找法查找某一字符在字符串中的位置

一、题目描述

  从键盘输入一个字符,用折半查找法找出该字符在已排序的字符串str中的位置。若该字符不在str中,则打印输出**。

二、分析解答

  此题主要考察字符串的应用,由于C语言并没有字符串类型,因此,需要使用字符数组来存储字符串。
  代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
 #include<stdio.h>

int main(){


char str[14] = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n'};


int lower = 0, higher = 13;

int mid;

char find;


scanf("%c",&find);


while(lower <= higher){

mid = (lower + higher) / 2;

if(find == str[mid]){


printf("location is: %d \n", mid + 1);

break;

}else if(find > str[mid]){

lower = mid +1;

}else{

higher = mid -1;


}


if(lower >higher ){

printf("**\n");


}

}

return 0;

}

  结果如下:
结果图