ASP源码.NET源码PHP源码JSP源码JAVA源码DELPHI源码PB源码VC源码VB源码Android源码

20160220CCPP体系详解0030天(3/3)

来源:网络整理     时间:2016-03-15     关键词:

本篇文章主要介绍了"20160220CCPP体系详解0030天",主要涉及到方面的内容,对于其他编程jrs看球网直播吧_低调看直播体育app软件下载_低调看体育直播感兴趣的同学可以参考一下: 程序片段(01):对称.c 内容概要:对称#define _CRT_SECURE_NO_WARNINGS#include #in...

#include #include #include //01.字符串当中出现次数为一次的第一个字符://  要点:出现一次+首个字符//  思路:从头到(尾-1)遍历每个字符,让其和后面的每一个//      字符进行比较,然后统计字符个数,统计完成之后,如果//      此时相同字符个数还是为0,那么就是该字符!//02.严格区分空字符和空指针:// 空字符:'\0'//  空指针:空类型的指针变量//  指针为空:NULL用于标识指针变量并为存储有意义的地址//03.双for循环实现查找首个出现一次的字符://  时间复杂度为O(N*N)char getFirstOnceByForFor(char * pStr)
{
    if (NULL == pStr)
        return'\0';
    for (int i = 0; i < strlen(pStr); ++i)
    {
        int sameChrNum = 0;
        for (int j = i + 1; j < strlen(pStr); ++j)
        {
            if (*(pStr + i) == *(pStr + j))
            {
                ++sameChrNum;
            }
        }
        if (!sameChrNum)
        {
            return *(pStr + i);
        }
    }

    return'\0';
}

//04.哈希表的建立特点://  1.等同于ASCII码表的一一映射对应关系//  2.通过查表法可以直接查询到所需查询的信息//  3.通过建立有序的哈希表,可以提高查询效率//05.哈希表的最大特点://  1.原生数据有序//  2.查找数据可以采用二分查找法//  3.可以通过(余数+模数)快速确定一个数据所在的位置//      先判断个位,再判断十位,再判断百位..(按个进行匹配)//06.哈希表(HashTable)的时间复杂度//  O(N+256)-->字符-->索引-->统计//07.根据不同的字符映射哈希表当中的数值://  char-->单字节-->8(bit位)-->2^8-->256种可能//  因此哈希表的时间复杂度为(((N+256))//08.哈希表的由来://  a[00]-->'\0'//  a[49]-->'1'//  a[65]-->'A'//  索引从0~256分别对应于一个字符,//  而该索引所对应的数值,就表示该整数出现的次数//  从而该整数的出现次数就等同于该字符出现的次数!//  字符-->索引-->统计//09.整型+字符+转义字符://  同一个整型数值可能同时对应于一个字符和一个转义字符//注:转义字符'\0'所对应的ASCII码值就是0//10.哈希表的建立特点和查询特点://  按照字符的顺序进行哈希表的建立;//  按照字符的顺序进行哈希表的查询://注:顺序的一次,以便于快速定位查询char getFirstOnceByHashTable(char * pStr)
{
    if (NULL == pStr)
        return'\0';
    int hashTable[256] = { 0 };
    char * pCopy = pStr;
    while (*pCopy)
    {//字符-->整型|索引-->统计(统计索引就等同于统计字符)
        hashTable[*pCopy++]++;
    }
    pCopy = pStr;
    while (*pCopy)
    {
        if (1 == hashTable[*pCopy])
        {
            return *pCopy;
        }
        ++pCopy;
    }
    return'\0';
}

int main01(void)
{
    char str[100] = "abcdfabcdvg";
    //putchar(getFirstOnce(str));putchar(getFirstOnceByHashTable(str));

    system("pause");
}

程序片段(13):01.字符串加密.c+02.密码加密.c
内容概要:加密

///01.字符串加密.c#include #include #include void encode(char * pStr)
{
    int pStrLen = strlen(pStr);
    for (int i = 0; i < pStrLen; ++i)
    {
        *(pStr + i) += 3;
    }
}

//01.加解密方式一://  加密:让每个数据进行统一算数运算//  解密:让每个数据进行统一算数逆算void decode(char * pStr)
{
    int pStrLen = strlen(pStr);
    for (int i = 0; i < pStrLen; ++i)
    {
        *(pStr + i) -= 3;
    }
}

int main01(void)
{
    char str[1024] = "HaiHua say: WangFang i love you 1314 forever";
    printf("(%s) \n", str);
    encode(str);
    printf("(%s) \n", str);
    decode(str);
    printf("(%s) \n", str);

    system("pause");
}

//02.加解密方式二://  采用异或运算符int main02(void)
{
    int a = 100, b = 10;
    a = a ^ b;//加密
    b = a ^ b;//解密-->加密
    a = a ^ b;  //        -->解密printf("a = %d, b = %d \n", a, b);

    system("pause");
}

void encryptOrDecrypt(char * pStr)
{
    int pStrLen = strlen(pStr);
    for (int i = 0; i < pStrLen; ++i)
    {
        *(pStr + i) ^= 48;
    }
}

int main03(void)
{
    char str[1024] = "HaiHua say: WangFang i love you 1314 forever";
    printf("(%s) \n", str);
    encryptOrDecrypt(str);
    printf("(%s) \n", str);
    encryptOrDecrypt(str);
    printf("(%s) \n", str);

    system("pause");
}
///02.密码加密.c#include #include void encodeOrDecode(char * pStr, char * pPass, int pStrLen)
{
    int pPassLen = strlen(pPass);
    int modulus = pStrLen / pPassLen;
    int remainder = pStrLen % pPassLen;
    if (!remainder)
    {
        for (int i = 0; i < modulus; ++i)
        {//分块儿for (int j = 0; j < pPassLen; ++j)
            {
                *(pStr + i * pPassLen + j) ^= *(pPass + j);
            }
        }
    }
    else
    {
        for (int i = 0; i < modulus; ++i)
        {
            for (int j = 0; j < pPassLen; ++j)
            {
                *(pStr + i * pPassLen + j) ^= *(pPass + j);
            }
        }
        for (int k = 0; k < remainder; ++k)
        {
            *(pStr + modulus * pPassLen + k) ^= *(pPass + k);
        }
    }
}

int main04(void)
{
    charstr[1024] = "HaiHua say: WangFang i love you 1314 forever";
    char pass[20] = "lovefang1314";
    int strLen = strlen(str);
    printf("(%s) \n", str);
    encodeOrDecode(str, pass, strLen);
    printf("(%s) \n", str);
    encodeOrDecode(str, pass, strLen);
    printf("(%s) \n", str);

    system("pause");
}
').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('
  • ').text(i)); }; $numbering.fadeIn(1700); }); });

    以上就介绍了20160220CCPP体系详解0030天,包括了方面的内容,希望对其他编程jrs看球网直播吧_低调看直播体育app软件下载_低调看体育直播有兴趣的朋友有所帮助。

    本文网址链接:http://www.codes51.com/article/detail_438389_3.html

    相关图片

    相关文章