题目:

      在字符串中找出第一个只出现一次的字符。如输入“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;  
}