1. strtok 不用动脑
int main()
{
char ch[101] = {0}, buf[101] = {0};
char* p1 = "C",*p2 = "P";
char* ret = NULL;
char* arr[101] = {0};
int i = -1, j, sum = 0;
while(scanf("%s", ch) != EOF)
{
strcpy(buf, ch);
i = -1;
for(ret = strtok(buf, p1); ret != NULL; ret = strtok(NULL, p1))
{
i++;
arr[i] = ret;
}
sum = 0;
for(j=0; j<=i; j++)
{
if(strlen(arr[j])%5 == 0)
sum += strlen(arr[j])/5;
else
sum += strlen(arr[j])/5 + 1;
}
i = -1;
for(ret = strtok(ch, p2); ret != NULL; ret = strtok(NULL, p2))
{
i++;
arr[i] = ret;
}
for(j=0; j<=i; j++)
{
if(strlen(arr[j])%5 == 0)
sum += strlen(arr[j])/5;
else
sum += strlen(arr[j])/5 + 1;
}
printf("%d\n", sum);
}
return 0;
}
2. 动脑
int main()
{
char ch[101]={'\0'};
while(scanf("%s", ch)!=EOF)
{
int i,sum=1,num=0;//这个sum=1可以弥补一个字符进去而没有sum++
for(i=0; ch[i]; i++)
{
if(num == 0)
;
else if(ch[i] != ch[i-1] || num == 5)
{
num = 0;//置零
sum++;//结束的时候,即完成一个循环时计数
}
num++;
}
printf("%d\n", sum);
}
return 0;
}