设字符数组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");}这个运行结果是这样的:
展开
1个回答
展开全部
#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;
}
追问
不对啊
追答
测试过,对的。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询