写一段c语言代码 一个由小写字母组成的字符串可以看成一些同一字母的最大碎片组成的。例如,"aaabbaaac"是由下面碎片组成的:"aaa","bb",‘c’。输入字符串,请计算字符串的所有碎片及所有碎片的平均长度。 所有碎片的平均长度 = 所有碎片长度之和/碎片个数 输入 测试次数t 每组测试数据为一行字符串 输出 对每组测试数据,输出字符串中按顺序出现的碎片和所有碎片的平均长度(相同碎片只输出一次,平均长度保留2位小数)。
时间: 2024-03-04 16:48:08 浏览: 62
c语言将字符串中的小写字母转换成大写字母
好的,下面是代码实现:
```c
#include <stdio.h>
#include <string.h>
int main()
{
int t;
scanf("%d", &t);
while (t--)
{
char s[1001];
scanf("%s", s);
int len = strlen(s);
if (len == 1)
{
printf("%c 1 %.2f\n", s[0], 1.0);
continue;
}
int cnt = 1;
for (int i = 1; i < len; i++)
{
if (s[i] == s[i - 1])
{
cnt++;
}
else
{
printf("%c %d ", s[i - 1], cnt);
cnt = 1;
}
}
printf("%c %d ", s[len - 1], cnt);
double avg = (double)len / (double)(len - cnt + 1);
printf("%.2f\n", avg);
}
return 0;
}
```
这个程序使用了一个循环来遍历输入的字符串,统计每个最大碎片的长度,并输出碎片的信息和平均长度。注意特判字符串长度为1的情况,以及最后一个最大碎片的长度的计算方法。
阅读全文