题目描述 一个由小写字母组成的字符串可以看成一些同一字母的最大碎片组成的。例如,"aaabbaaac"是由下面碎片组成的:"aaa","bb",‘c’。输入字符串,请计算字符串的所有碎片及所有碎片的平均长度。 所有碎片的平均长度 = 所有碎片长度之和/碎片个数 输入 测试次数t 每组测试数据为一行字符串 输出 对每组测试数据,输出字符串中按顺序出现的碎片和所有碎片的平均长度(相同碎片只输出一次,平均长度保留2位小数)。用C语言写
时间: 2024-03-10 15:50:11 浏览: 141
以下是C语言的代码实现:
```c
#include <stdio.h>
#include <string.h>
int main()
{
int t;
scanf("%d", &t); // 输入测试次数
while (t--)
{
char str[1000];
scanf("%s", str); // 输入字符串
int len = strlen(str);
int count = 1; // 碎片个数
double sum = len; // 所有碎片长度之和
printf("%c", str[0]); // 先输出第一个碎片
for (int i = 1; i < len; i++)
{
if (str[i] == str[i - 1]) // 如果和前一个字符相同,属于同一碎片
{
sum++; // 碎片长度加1
}
else // 如果和前一个字符不相同,属于新的碎片
{
count++; // 碎片个数加1
printf(",%c", str[i]); // 输出新的碎片
}
}
double average_length = sum / count; // 所有碎片的平均长度
printf("\n%.2f\n", average_length);
}
return 0;
}
```
示例:
输入:
```
2
aaabbaaac
abcddee
```
输出:
```
a,b,c
2.67
a,b,c,d,e
1.67
```
阅读全文