题目描述 从键盘读入一个字符串,查找字符串中首个重复出现的小写字母,在屏幕上输出该字母及其在字符串中第一次和第二次出现的位置。字符的位置从1开始计数。c语言
时间: 2024-03-05 20:53:36 浏览: 44
从键盘上输入一串英文字符(不含空格与其他字符),统计每个字符的数目,并输出字母及相应的数目。
好的,这是一道关于字符串处理的问题,我会帮您解答。以下是实现该算法的 C 语言代码:
```c
#include <stdio.h>
#include <ctype.h>
#include <string.h>
#define MAXLEN 100
int main() {
char s[MAXLEN], c;
int i, len, pos1, pos2;
int hash[26] = {0};
printf("请输入字符串: ");
fgets(s, MAXLEN, stdin);
len = strlen(s) - 1;
for (i = 0; i < len; i++) {
c = s[i];
if (islower(c)) {
if (hash[c-'a'] > 0) {
pos1 = hash[c-'a'];
pos2 = i+1;
printf("重复出现的小写字母是 %c,在位置 %d 和 %d 出现过。\n", c, pos1, pos2);
return 0;
} else {
hash[c-'a'] = i+1;
}
}
}
printf("没有重复出现的小写字母。\n");
return 0;
}
```
这段代码首先从键盘读取一个字符串,然后遍历字符串中的每个字符。如果字符是小写字母,就在哈希表中记录它的位置。如果一个字母已经在哈希表中出现过,那么它就是第一个重复出现的小写字母。在找到重复出现的小写字母后,我们使用 `return` 语句退出程序。如果没有找到重复出现的小写字母,就会执行最后的输出语句。
阅读全文