编写C语言程序,要求如下:一个由小写字母组成的字符串可以看成一些同一字母的最大碎片组成的。例如,“aaabbaaac”是由下面碎片组成的:“aaa”,“bb”,'c'。输入字符串,请计算字符串的所有碎片及所有碎片的平均长度。 所有碎片的平均长度 = 所有碎片长度之和/碎片个数 输入 测试次数t 每组测试数据为一行字符串 输出 对每组测试数据,输出字符串中按顺序出现的碎片和所有碎片的平均长度(相同碎片只输出一次,平均长度保留2位小数)。
时间: 2024-03-03 12:53:16 浏览: 104
C语言程序设计-从字符串中删除指定的字符;同一字母的大、小写 按不同字符处理;
5星 · 资源好评率100%
好的,我来帮你解决这个问题。以下是 C 语言程序的代码:
```
#include <stdio.h>
#include <string.h>
int main()
{
int t;
scanf("%d", &t);
while (t--)
{
char str[1001];
scanf("%s", str);
int len = strlen(str);
int cnt = 1;
double sum = 0;
for (int i = 1; i < len; i++)
{
if (str[i] != str[i-1])
{
printf("%c", str[i-1]);
printf(" %d\n", cnt);
sum += cnt;
cnt = 1;
}
else
{
cnt++;
}
}
printf("%c", str[len-1]);
printf(" %d\n", cnt);
sum += cnt;
double avg = sum / (len - (str[len-1] == str[len-2]));
printf("%.2lf\n", avg);
}
return 0;
}
```
程序的思路如下:
1. 首先输入测试数据的组数 t。
2. 对于每组测试数据,输入一个字符串 str。
3. 遍历字符串,计算每个碎片的长度并输出。
4. 计算所有碎片的平均长度并输出。
需要注意的几点:
1. 在计算平均长度时,要排除最后一个碎片是整个字符串的情况。
2. 输出平均长度时,保留两位小数需要使用 "%.2lf" 的格式化输出。
希望能解答你的问题!
阅读全文