C语言简单小程序,写出一个函数,统计出串中0或1最大连续出现的次数
多次仍硬币,总会连续多次同一面的情况,把每次的实验结果记录下来,形成一个串字符0,1分别代表正面、反面向上写出一个函数,统计出串中0或1最大连续出现的次数,函数原型为:u...
多次仍硬币,总会连续多次同一面的情况,把每次的实验结果记录下来,形成一个串字符0,1分别代表正面、反面向上
写出一个函数,统计出串中0或1最大连续出现的次数,函数原型为:
unsigned int max_sub_seq(char* s)
参数为待处理的字符串,返回值为最大连续出现的次数
要求有主程序,便于我测试正确性 展开
写出一个函数,统计出串中0或1最大连续出现的次数,函数原型为:
unsigned int max_sub_seq(char* s)
参数为待处理的字符串,返回值为最大连续出现的次数
要求有主程序,便于我测试正确性 展开
2个回答
展开全部
将字符串以一维数组存放,用两个指针p1、p2,一前一后,当p1指向第一个结点,p2指向第二个结点,判断p1->data是否与p2->data相等。可以写三个函数0的最大连续次数,1的最大连续次数,还有指针移动的函数,两个计数的……或者直接跟0和1比较,不知是否行的通^-^
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include <stdio.h>
#define MAX_SIZE (100)
unsigned int max_sub_seq(char* s);
int main()
{
char Array[MAX_SIZE];
printf("Please input:\n");
scanf("%s",Array);
printf("Max is: %d\n",max_sub_seq(Array));
return 0;
}
unsigned int max_sub_seq(char* s)
{
unsigned int count0 = 1;
unsigned int count1 = 1;
unsigned Max = 1;
char temp;
int iLoop(0);
while(('a' != s[iLoop]) && ('A' != s[iLoop]))
{
temp = s[iLoop];
++iLoop;
if ('1' == s[iLoop])
{
if (temp == s[iLoop])
{
++count1;
}
else
{
count1 = 1;
}
}
else if ('0' == s[iLoop])
{
if (temp == s[iLoop])
{
++count0;
}
else
{
count0 = 1;
}
}
if (count0 > Max)
{
Max = count0;
}
if (count1 > Max)
{
Max = count1;
}
}
return Max;
}
#define MAX_SIZE (100)
unsigned int max_sub_seq(char* s);
int main()
{
char Array[MAX_SIZE];
printf("Please input:\n");
scanf("%s",Array);
printf("Max is: %d\n",max_sub_seq(Array));
return 0;
}
unsigned int max_sub_seq(char* s)
{
unsigned int count0 = 1;
unsigned int count1 = 1;
unsigned Max = 1;
char temp;
int iLoop(0);
while(('a' != s[iLoop]) && ('A' != s[iLoop]))
{
temp = s[iLoop];
++iLoop;
if ('1' == s[iLoop])
{
if (temp == s[iLoop])
{
++count1;
}
else
{
count1 = 1;
}
}
else if ('0' == s[iLoop])
{
if (temp == s[iLoop])
{
++count0;
}
else
{
count0 = 1;
}
}
if (count0 > Max)
{
Max = count0;
}
if (count1 > Max)
{
Max = count1;
}
}
return Max;
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询