C/C++语言之数据交换、字符串转数字、字符串反转、小写转大写、二分查找

#include 

#include 

//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<

你可能感兴趣的:(c/c++学习笔记,C/C++)