各位大侠帮帮忙看看下面的程序是怎么运行的? 麻烦详细叙述一下分析过程 5

写出下列程序的输出结果。#include<stdio.h>#include<string.h>intf(charc,char*s){intm,n,h;for(n=0,h=... 写出下列程序的输出结果。
#include <stdio.h>
#include <string.h>
int f(char c, char* s)
{ int m,n,h;
for(n=0,h=strlen(s);n<=h; ) {
m=(n+h)/2;
if(c<s[m]) h=m-1;
else if(c>s[m]) n=m+1;
else return m;
}
return –1;
}
void main( )
{ printf(“%d ”,f( ‘g’ , ”abdgkmxy” ));
printf(“%d\n”,f( ‘C’ , ”BQMAXYZOTE” ));
}
展开
 我来答
grotar
2011-12-20 · TA获得超过350个赞
知道小有建树答主
回答量:337
采纳率:50%
帮助的人:159万
展开全部
你首先得知道,void main()是程序入口,int f()是函数调用。
其次 int f(char c,char *s )是函数的声明,这里传入两个参数 char型的c 和char型的指针的s
其次f里面具体做的是两分法字母排序,最后返回字母在字符串中的大小顺序
楼主可以把字母传入然后去看,g传入,返回m 于是m=4
第二次 C在里面没有找到,去比较C<X 所以h=4 再次去比较到2 ,还是小 于是到B,发现大了,于是C就在第二位 返回2
于是最后就输出 4 2
请采纳。
中智咨询
2024-08-28 广告
在当今竞争激烈的商业环境中,企业需要不断提高自身的竞争力,以保持市场份额和增加利润。通过人效提升,企业可以更有效地利用有限的资源,提高生产力和效益,从而实现盈利目标。中智咨询提供全方位的组织人效评价与诊断、人效提升方案等数据和管理咨询服务。... 点击进入详情页
本回答由中智咨询提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式