一、題目描述
從鍵盤輸入一個字符,用折半查找法找出該字符在已排序的字符串str中的位置。若該字符不在str中,則打印輸出**。
二、分析解答
此題主要考察字符串的應用,由於C語言並沒有字符串類型,因此,需要使用字符數組來存儲字符串。
代碼如下:
#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;
}
結果如下: