本篇文章主要介绍了"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