c语言程序设计。求一个字符串中最长的连续出现的字符,输出该字符及其出现次数,字符串中无空白字符(空格、回车和 tab),如果这样的字符不止一个,则输出第一个。输入格式第一行输入整数 N,表示测试数据的组数。每组数据占一行,包含一个不含空白字符的字符串,字符串长度不超过 200。输出格式共一行,输出最长的连续出现的字符及其出现次数,中间用空格隔开。
时间: 2024-02-28 22:55:45 浏览: 82
好的,根据您的需求,可以使用以下代码实现:
```c
#include <stdio.h>
#include <string.h>
int main()
{
int n, i, j, cnt = 1, max_cnt = 0, max_char;
char str[201];
printf("请输入测试数据的组数:");
scanf("%d", &n);
for (i = 0; i < n; i++) {
printf("请输入一个字符串:");
scanf("%s", str);
int len = strlen(str);
for (j = 1; j < len; j++) {
if (str[j] == str[j - 1]) {
cnt++;
}
else {
if (cnt > max_cnt) {
max_cnt = cnt;
max_char = str[j - 1];
}
cnt = 1;
}
}
if (cnt > max_cnt) {
max_cnt = cnt;
max_char = str[j - 1];
}
printf("%c %d\n", max_char, max_cnt);
max_cnt = 0;
cnt = 1;
}
return 0;
}
```
在这段代码中,我们首先使用 `scanf()` 函数从标准输入中读取测试数据的组数 `n`。然后使用两个循环,分别处理每组数据中的字符串。
在内层循环中,我们遍历字符串中的每个字符,如果相邻的两个字符相同,则将计数器 `cnt` 加 1;如果不同,则将计数器 `cnt` 归 1,并判断当前的 `cnt` 是否大于最大计数器 `max_cnt`,如果是则更新 `max_cnt` 和最长的连续出现的字符 `max_char`。
最后,我们输出找到的最长的连续出现的字符及其出现次数,并将 `max_cnt` 和 `cnt` 归 0,以便处理下一组数据。
希望能够帮到您!
阅读全文