#include <iostream>
#include <assert.h>
//1、数据交换的两种方式(不用第三个变量)
bool SwapA(int& a, int& b)
{
if(a == b)
return false;
a = a ^ b;
b = a ^ b;
a = a ^ b;
return true;
}
bool SwapB(int& a, int& b)
{
if(a == b)
return false;
a = a + b;
b = a - b;
a = a - b;
return true;
}
//2、字符串转数字
int Myatoi(const char* pString)
{
assert(0 != pString);
const int len = strlen(pString);
int value = 0;
int times = 1;
for(int i = len - 1; i >= 0; --i, times *= 10)
{
value += (pString[i] - '0') * times;
}
return value;
}
//3、字符串反转
char* MyInverted(char* pDest)
{
assert(0 != pDest);
const int len = strlen(pDest);
char T = 0;
for(int i = 0; i < len / 2; ++i)
{
T = pDest[i];
pDest[i] = pDest[len - i - 1];
pDest[len - i - 1] = T;
}
return pDest;
}
//4、小写转大写
char* MyUpper(char* pDest)
{
assert(0 != pDest);
for(char* i = pDest; *i != '\0'; ++i)
{
if(*i < 'a' || *i > 'z')
continue;
(*i) -= ('a' - 'A');
}
return pDest;
}
//5、二分查找(已降序)
int BinarySerach(int *pArray, int Count, int value)
{
assert(0 != pArray);
int left = 0;
int right = Count - 1;
int mid = 0;
while(left < right)
{
mid = (left + right) / 2;
if(value > pArray[mid])
{
right = mid - 1;
}
else if(value < pArray[mid])
{
left = mid + 1;
}
else
{
return mid;
}
}
return -1;
}
int main(int argc, char* argv[])
{
char string[] = "123456a";
std::cout<<MyInverted(string)<<std::endl;
//char* string = "abcdefg"; //error:Changes the value of the constant memory area.
std::cout<<MyUpper(string)<<std::endl;
return 1;
}