填空题
str为一个字符序列,序列由字符0和1组成。请补充函数proc(),该函数的功能是:查找该字符序列中0字符连续出现的最长长度(即0字符的个数),如果有几个0字符串长度相同,只记录最后一个0字符串的相关信息。通过m和k返回最长0字符串的长度和最后0字符的下标。例如,如果输入“0100001000”,结果为:0字符串最长长度为4,起始和结尾下标依次为2、5。
注意:部分源程序给出如下。
请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的横线上填入所编写的若干表达式或语句。
试题程序:
#include<stdlib.h>
#include<stdio.h>
#include<conio.h>
#define M 80
void proc(
1)
{
int i, j=0;
int bb[M];
char*p=str;
*m=0;
*k=0;
for(i=0; i<M; i++)
bb[i]=0;
i=0;
while(*(p+i))
{
if(*(p+i)=="0")
{
2;
i++;
}
else
{
j++;
i++;
}
if(
3)
{
*m=bb[j];
*k=i-1;
}
}
}
void main()
{
char str[M];
int m, k;
system("CLS");
printf("***input the original string***/n");
gets(str);
printf("***The Original string***/n");
puts(str);
proc(str, &m, &k);
printf("/nThe length of "0" is:%d/n", m);
printf("***The suffix of character***/n");
printf("%d, %d", k-m+1, k);
}
【正确答案】
【答案解析】char*str, int*m, int*k bb[j]++ *m<=bb[j][解析] 形参的个数和类型由调用该函数的实参的类型和个数决定,由main()函数中的proc()函数可知,第一处填“char*str, int*m, int*k”;由函数proc()可知,数组bb中存放每一个连续的0字符串中0的个数,因此第二处填“bb[j]++”;最后把个数最多的放在变量*m中,下标放在*k中,因此第三处填“*m<=bb[j]”。