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

#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;

    }

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值