根据要求写一串c语言代码 题目描述 从键盘读入一个字符串,查找字符串中首个重复出现的小写字母,在屏幕上输出该字母及其在字符串中第一次和第二次出现的位置。字符的位置从1开始计数。 输入要求 输入一个字符串 输出要求 查找字符串中首个重复出现的小写字母,在屏幕上输出该字母及其在字符串中第一次和第二次出现的位置。字符的位置从1开始计数。两次出现的位置及其与字母间以冒号分隔。如果没有重复的小写字母,则输出0。 输入样例 12qwerwQasq 输出样例 w:4:7
时间: 2024-03-05 18:53:09 浏览: 55
以下是符合要求的C语言代码:
```c
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main() {
char str[100];
int count[26] = {0};
int first[26] = {0};
int len, i, pos, flag = 0;
fgets(str, sizeof(str), stdin);
len = strlen(str) - 1; // 去掉最后的换行符
for (i = 0; i < len; i++) {
if (islower(str[i])) {
pos = str[i] - 'a';
count[pos]++;
if (count[pos] == 1) {
first[pos] = i + 1;
} else if (count[pos] == 2) {
printf("%c:%d:%d\n", str[i], first[pos], i + 1);
flag = 1;
break;
}
}
}
if (!flag) {
printf("0\n");
}
return 0;
}
```
代码思路:
1. 定义一个字符串数组 `str` 存储输入的字符串,一个长度为 26 的整型数组 `count` 统计每个小写字母出现的次数,一个长度为 26 的整型数组 `first` 记录每个小写字母第一次出现的位置。
2. 从键盘读入一个字符串,使用 `fgets()` 函数读入,遇到换行符停止读入。
3. 遍历字符串,对每个小写字母进行操作:
1. 计算小写字母在 `count` 数组中对应的下标 `pos`。
2. `count[pos]` 加 1。
3. 如果 `count[pos]` 等于 1,说明这是第一次出现该字母,记录该字母第一次出现的位置。
4. 如果 `count[pos]` 等于 2,说明这是第二次出现该字母,输出该字母及其在字符串中第一次和第二次出现的位置,并设置标志变量 `flag` 为 1 表示已找到第一个重复出现的小写字母。
4. 如果 `flag` 仍为 0,说明字符串中没有重复出现的小写字母,输出 0。
阅读全文