#include <stdio.h> #include <stdlib.h> int main() { int freq[26] = {0}; int pos[26] = {0}; int cnt = 0,min = 9999,firstIndex = -1; char ch; while((ch = getchar()) != '\n'){ int off = ch - 'a'; if(pos[off] == 0){ pos[off] = cnt ++; } freq[off] ++; } for(int i = 0; i < 26; i ++){ if(freq[i] == 1){ if(min > pos[i]){ min = pos[i]; firstIndex = i; } } } if(firstIndex != -1) printf("%c\n",'a'+ firstIndex); else printf("no\n"); return 0; }
时间: 2023-12-29 21:06:18 浏览: 63
#include <stdio.h>
4星 · 用户满意度95%
这段代码的作用是统计用户输入的字符串中第一个不重复的字符,并输出该字符。下面是代码的详细解释:
1. 声明了两个数组 freq 和 pos,分别用于记录每个字符出现的次数和字符第一次出现的位置。
2. 初始化 cnt 为 0,min 为一个较大的数(9999),firstIndex 为 -1,表示还没有找到第一个不重复的字符。
3. 通过 getchar() 逐个读取用户输入的字符,如果该字符尚未出现过,则在 pos 数组中记录该字符第一次出现的位置,并将 cnt 自增 1;同时在 freq 数组中记录该字符出现的次数。
4. 遍历 freq 数组,找到第一个出现次数为 1 的字符。如果该字符在 pos 数组中的位置比 min 小,则更新 min 和 firstIndex。
5. 如果找到了第一个不重复的字符,则输出该字符;否则输出 "no"。
6. 返回 0,程序结束。
注意,该代码只能处理小写字母,如果用户输入了大写字母或其他字符,可能会导致程序出错。
阅读全文