设字符数组a已按其ASCAⅡ码递增排序,输入一字符,用折半查找法找出其位置,若该字符不在a中,则打印出**

请问我下面的程序那里错了啊?运行后结果不对啊!!!急求!!!!!#include<stdio.h>#include<string.h>voidmain(){chara[2... 请问我下面的程序那里错了啊?运行后结果不对啊!!!急求!!!!!#include<stdio.h>#include<string.h>void main(){ char a[20],ch; int top,mid,bot; printf("输入一个已排序的字符串:"); gets(a); printf("输入一带查找的字符:"); scanf("%c",&ch); for(top=0,bot=strlen(a)-1;top<=bot;) { mid=(top+bot)/2; if(ch==a[mid]) { printf("%c的位置是:%d\n",ch,mid+1); break; } else if(ch>a[mid]) top=mid+1; else bot=mid-1; } if(top>bot) printf("**\n");}这个运行结果是这样的: 展开
 我来答
B2K1bonPplR
2017-02-12 · TA获得超过2049个赞
知道小有建树答主
回答量:1156
采纳率:72%
帮助的人:392万
展开全部
#include<stdio.h>
#include<string.h>

int main() {
  char a[20], ch;
  int top, mid, bot;
  printf("输入一个已排序的字符串:");
  gets(a);
  printf("输入一带查找的字符:");
  scanf("%c", &ch);
  for (bot = 0, top = strlen(a) - 1; bot <= top;) {
    mid = (top + bot) / 2;
    if (ch == a[mid]) {
      printf("%c的位置是:%d\n", ch, mid + 1);
      break;
    } else if (ch > a[mid])
      bot = mid + 1;
    else
      top = mid - 1;
  }
  if (bot > top)
    printf("*\n");
  return 0;
}
追问
不对啊
追答
测试过,对的。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式