先从键盘读入一个字符串,查找字符串中首个重复出现的小写字母,在屏幕上输出该字母及其在字符串中第一次和第二次出现的位置。字符的位置从1开始计数。
时间: 2024-03-23 13:37:23 浏览: 42
从键盘接收一个小写字母,然后找出它的前导字符和后续字符,再按顺序显示这三个字符。
4星 · 用户满意度95%
以下是一个实现该功能的 C 语言程序:
```c
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main() {
char str[100];
int len, i, pos1 = -1, pos2 = -1;
int count[26] = {0}; // 用于记录每个字母出现的次数
printf("请输入一个字符串:");
fgets(str, sizeof(str), stdin); // 从键盘读入字符串
len = strlen(str);
if (len > 0 && str[len - 1] == '\n') {
str[len - 1] = '\0'; // 去掉 fgets() 函数读入的换行符
len--; // 字符串长度减一
}
for (i = 0; i < len; i++) {
if (islower(str[i])) { // 判断是否为小写字母
int index = str[i] - 'a';
count[index]++;
if (count[index] == 2) { // 找到了第二次出现的小写字母
pos2 = i;
break; // 直接退出循环
}
if (count[index] == 1) { // 找到了第一次出现的小写字母
pos1 = i;
}
}
}
if (pos2 != -1) { // 找到了首个重复出现的小写字母
printf("首个重复出现的小写字母为:%c\n", str[pos2]);
printf("第一次出现的位置为:%d\n", pos1 + 1);
printf("第二次出现的位置为:%d\n", pos2 + 1);
} else {
printf("字符串中没有首个重复出现的小写字母。\n");
}
return 0;
}
```
程序思路如下:
1. 从键盘读入一个字符串,并去掉最后的换行符。
2. 遍历字符串中的每个字符,如果该字符是小写字母,则记录该字母出现的次数,并记录第一次和第二次出现的位置。
3. 如果找到了首个重复出现的小写字母,则在屏幕上输出该字母及其在字符串中第一次和第二次出现的位置;否则输出提示信息。
阅读全文