关于C语言的一道题,请耐心解答……

来源:百度知道 编辑:UC知道 时间:2024/07/08 19:24:59
题目要求:
str为一个字符序列,序列由字符0和1组成。请补充函数fun(),该函数的功能是:查找该字符序列中0字符连续出现的最长长度(即0字符的个数),如果有几个0字符串长度相同,只记录最后一个0字符串的相关信息。通过m和k返回最长0字符串的长度和最后0字符的下标。例如,如果输入"01001000",结果为:0字符串最长长度为3,结尾下为7。
注意:
请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。

#include<stdio.h>
#include<conio.h>
#define N 80
void fun (char *str,int *m,int *k)
{
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')
{
bb[j]++ ;
i++;
}
else
{
j++;
i++;
}
if ( *m<=bb[j] )
{
*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 *****

1. *m<=bb[j] )这里的比较时*m的值是0喽,这句话=0<=bb[j],你都知道他没运算了。他就是后面赋值~

2.bb[j]++ ,看到没,如果下一个是0这bb[j]增加,也就是,bb[2]=0.1.2...5.后面就知道有5个了

3.这里是地址遇到0就终止,没错啊,他不是都赋值了0么,你输入的0是字符串0,是char的,不是数字0,既比如1001010,那里面就是"1001010"000000...记数到引号为止。

4.这种函数 要有返还的,用int char
比如要吧m返还,就用int() return m;
但只能返回1个数到主函数,void()就是设么都不返还,。所以这里用指针。指针~的东西自己看书吧。

楼主好好学好了再来看指针~~