zoukankan      html  css  js  c++  java
  • 编程菜鸟的日记-初学尝试编程-实现字符串的逆序

    一:

    //若源字符串为"abc”,得到其逆序字符串"cba”,

    //在允许开辟新的动态空间则可以逆序拷贝进新的空间,即可实现逆序输出原始字符串

    #include <iostream>
    using namespace std;
    char *strInverse(char *str)

     char *p=new char[sizeof(char)*(strlen(str)+1)];//开辟一个新的存储空间,保存逆序字符串
     char *New=p; //用于返回新的逆序字符串的首地址

     char *end=str;
     end+=(strlen(str)-1)*sizeof(char);//指向字符串str的最后一个字符不包含''
     while(end>=str)
     {
      *p++=*end--;
     }
     *p='';//添加结束标识符
     return New;
    }

    void main()
    {
     char *str="abdkced";
     cout<<"输入字符串:"<<str<<endl;
     char *New;
     New=strInverse(str);
     cout<<"逆序字符串:"<<New<<endl;
     system("pause");
    }


     二:在原始字符串序列基础上进行逆序,不允许利用新的存储空间

    //若源字符串为"abc”,得到其逆序字符串"cba”,原地逆序

    char *InplaceInverse(char *str)
    //初始化两个指针,一个指向字符串首,另一个指向字符串尾
    {
     char *p=str;
        char *q=str;
     char temp;
     q=q+(strlen(str)-1)*sizeof(char);
     while(p!=NULL && q!=NULL && p<q)
     {
      temp=*p;
      *p=*q;
      *q=temp;
      p++;
      q--;
     }
     return str;
    }

    void main()
    {
     char str[]="abdkced";//需要区别初始化char *str=”abdkced“,这样是str是指向字符串的指针常量不可以被修改
     cout<<"输入字符串:"<<str<<endl;
     char *New;
     New=InplaceInverse(str);
     //New=strInverse(str);
     cout<<"逆序字符串:"<<New<<endl;
     system("pause");
    }

  • 相关阅读:
    模块的搜索路径
    循环导入问题
    模块的四种形式
    匿名函数
    面向过程编程
    内置函数
    名称空间和作用域
    函数嵌套
    函数对象
    可变长参数
  • 原文地址:https://www.cnblogs.com/lynnycy/p/3402955.html
Copyright © 2011-2022 走看看