题目:
在字符串中找出第一个只出现一次的字符。如输入“abaccdeff”,则输出'b'。
题目分析:
对于在字符串中找出第一个出现一次的字符,联系ASCII码表,能够得到有256中不同的字符,可以利用字符的编码,将每个字符的编码作为数组的下表,建立一个有256个元素的数组arr[256],将数组中的每一个元素对应统计字符的个数,从字符串的第一个字符进行遍历,遇到一个字符给对应的数组元素加1,当数组中的其中一个元素变到2,则输出这个元素所对应的数组下表,即就是这个字符的ASCII码。
下面为具体的程序:
#define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #include <stdlib.h> #include <string.h> char Find(char *p) { if(p == NULL) { return '\0'; } int arr1[256]; int i=0; for(i=0;i<256;i++) //初始化数组 { arr1[i] = 0; } char *q=p; while((*q)!='\0') { arr1[*q]++; q++; } q=p; while(*q!='\0') { if(arr1[*q]==1) { return *q; } q++; } return '\0'; } int main() { char arr[256]; printf("请输入:"); gets(arr); printf("Find: %2c",Find(arr)); system("pause"); return 0; }