str为一个字符序列 序列由字符0和1组成。请补充函数 fun() 该函数的功能是:查找该字
问题详情
str为一个字符序列,序列由字符0和1组成。请补充函数 fun(),该函数的功能是:查找该字符序列中0字符连续出现的最长长度(即0字符的个数),如果有几个0字符串长度相同,只记录最后一个0字符串的相关信息。通过m和k返回最长0字符串的长度和最后0字符的下标。例如,如果输入“01001000”,结果为:0字符串最长长度为3,起始和结尾下标依次为5、7。
注意:部分源程序给出如下.
请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。
试题程序:
include<stdio.h>
include<conio.h>
define N 80
void fun (【 】)
{
int i, j=0;
int bb[N];
char *p=str;
*m=0;
*k=0;
for(i=0;i<N;i++)
bb[i]=0;
i=0;
while(*(p+i))
{
if(*(p+i)="0")
{
【 】
i++;
}
else
{
j++;
i++;
}
if (【 】)
{
*m=bb[j];
*k=i-1;
}
}
}
main()
{
char str[N];
int m,n,k;
clrscr();
printf("***input the original string
***n");
gets(str);
printf("***The Original string ***n");
puts(str);
fun(str,&m,&k);
printf("nThe length of "0" is :
%dn",m);
printf("*** The suffix of character
***n");
printf(" %d,%d",k-m+1,k);
}请帮忙给出正确答案和分析,谢谢!
参考答案
正确答案:char *strint*mint*kbb[j]++*m<=bb[j]
char *str,int*m,int*kbb[j]++*m<=bb[j] 解析:第一空:通过主函数main()对函数fun()的调用,可以知道函数的形参都是指针型,其中,第一个参数为字符型指针,后两个参数都是整型指针。第二空:数组bb[j]用来统计连续0的长度。第三空:*m中存放连续0的最长长度,当bb[j]中的数大于*m的值时,则将bb[j]赋给*m,始终保持*m中存放连续0的最长长度。