|
发表于 2022-11-4 13:01:48
|
显示全部楼层
本帖最后由 jackz007 于 2022-11-4 13:21 编辑
- #include <stdio.h>
- int main(void)
- {
- int a[] = {8,7,6,5,3,2,1} , top , bott , flag = 1 , sign = 1 ;
- int i , n , avg ;
- char c ;
- while (sign) {
- printf("请输入目标数 : ") ;
- scanf("%d" , & n) ;
- if (n < a[6] || n > a[0]) {
- printf("目标数不在范围内\n") ;
- } else {
- top = 0 ;
- bott = 6 ;
- flag = 1 ; // 应对多次查找,必须每次重新初始化 flag
- while(flag && top <= bott) {
- avg = (top + bott) / 2 ;
- if (a[avg] == n) {
- printf("该数的位置在%d\n" , avg+1) ;
- flag = 0 ;
- } else {
- if(n < a[avg]) top = avg + 1 ;
- else bott = avg - 1 ;
- }
- }
- if(flag) printf("查无此数!\n") ;
- printf("\n") ;
- printf("是否继续查找 <Y/N> : ") ;
- fflush(stdin) ; // 读取字符前,先清空键盘缓冲区,否则,后面变量 c 读取到的一定是 '\n' 字符
- scanf("%c" , & c) ;
- if(c == 'N' || c == 'n') {
- printf("\n好的\n") ;
- sign = 0 ;
- }
- }
- printf("\n") ;
- }
- }
复制代码 |
|