从键盘读入一个字符串,查找字符串中首个重复出现的小写字母,在屏幕上输出该字母及其在字符串中第一次和第二次出现的位置。字符的位置从1开始计数。 输入要求 输入一个字符串 输出要求 查找字符串中首个重复出现的小写字母,在屏幕上输出该字母及其在字符串中第一次和第二次出现的位置。字符的位置从1开始计数。两次出现的位置及其与字母间以冒号分隔。如果没有重复的小写字母,则输出0。C语言
时间: 2024-03-08 10:49:31 浏览: 88
从键盘上输入一串英文字符(不含空格与其他字符),统计每个字符的数目,并输出字母及相应的数目。
下面是实现该功能的C语言代码:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[100];
int pos1 = -1, pos2 = -1;
scanf("%s", str);
int len = strlen(str);
int count[26] = {0}; // 用于记录各小写字母出现的次数
for (int i = 0; i < len; i++) {
if (str[i] >= 'a' && str[i] <= 'z') {
count[str[i] - 'a']++;
if (count[str[i] - 'a'] == 2) {
pos2 = i + 1;
} else if (count[str[i] - 'a'] == 1) {
pos1 = i + 1;
}
}
}
int index = -1; // 记录首个重复出现的小写字母的下标
for (int i = 0; i < 26; i++) {
if (count[i] >= 2) {
index = i;
break;
}
}
if (index == -1) {
printf("0");
} else {
printf("%c:%d:%d", 'a' + index, pos1, pos2);
}
return 0;
}
```
实现思路如下:
1. 读入字符串,初始化两个位置变量为 -1。
2. 遍历字符串,记录各小写字母出现的次数,同时记录首次和次次出现的位置。如果某个小写字母出现次数为2,更新次次出现的位置;如果出现次数为1,更新首次出现的位置。
3. 遍历记录各小写字母出现次数的数组,找到首个出现次数大于等于2的小写字母的下标,记录到 index 变量中。
4. 如果 index 仍然为初始值 -1,说明没有重复出现的小写字母,输出0;否则输出该字母及其在字符串中的首次和次次出现位置。
阅读全文