填空题 1.  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(______)
    {
    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')
    {
    ______;
    i++;
    }
    else
    {
    j++;
    i++;
    }
    if(______)
    {
    *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);
    }
  • 1、
【正确答案】 1、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]”。