c++交换字符方法大全

c++交换字符方法大全:
交换1:反向输出法:
其实就是将字符串数组一个一个从最后一个输出到屏幕上,并没有改变数组本身内容

/************************************/
/**交换1:反向输出法    */
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
int main(){
    char a[10];
    int i;
    cin>>a;
    for(i=strlen(a)-1;i>=0;i--)
        cout<<a[i];
return 0;
//}

交换2:交换内容法:
地址传递
地址传递与值传递的不同在于,它把实参的存储地址传送给形参,使得形参指针和实参指针指向同一块地址。因此,被调用函数中对形参指针所指向的地址中内容的任何改变都会影响到实参。

/**交换2:交换内容法    */
/**示例代码:*/
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
void myswap(char *c,int n){
    char a;
    for(int i=0,j=n;j>i;i++,j--)
    {
        a=c[i];
        c[i]=c[j];
        c[j]=a;
        /**swap(c[i],c[j]);也可以*/
    }
}
int main(){
    char a[100];
    scanf("%s",a);
    int i;
    myswap(a,strlen(a)-1);
    cout<<a;
}

交换3:交换内容地址法


/**交换3:交换内容地址法   */
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
using namespace std;
void myswap(char*s){
 char *p, *q;
 for (p=s,q=s+strlen(s)-1;p<q;++p,--q)
 { swap(*p,*q); }
}
int main()
{
    char a[100];
    cin>>a;
    myswap(a);
    cout<<a;
}

交换4:算法交换法:
reverse在算法文件 < algorithm >中
还有一个知识点,在敲代码时发现string的用法和字符数组的用法不一样
@—@
就是用reverse的时候不可以像下面的代码块用字符数组,而是用

char a[100];
cin.getline(a,sizeof(a));	
int m=strlen(a);
reverse(a,a+m);

至于为什么,找了十几篇博客大体意思是这样的
cin.getline意思是读取非‘\n’,的字符然后再取总共有几个字符
用strlen求出有多少元素
因为开始的时候就定义了有几个元素所以不可以用.bengin和.end而是用strlen
然后reverse中打出要交换的元素区间。

/**交换4:算法交换法   */
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
int main(){
    string a;
    cin>>a;
    reverse(a.begin(),a.end());
    cout<<a;
}

交换5:递归子字符串函数交换法:介绍substr的一种用法

/**交换5:递归子字符串函数交换法   */
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
string myswap(string a){
    if(a.size()==1)
        return a;
    else
        return myswap(a.substr(1))+a[0];
}
int main()
{
    string a;
    cin>>a;
    cout<<myswap(a);
}
      补充:
      * substr有2种用法:
      * 假设:string s = "0123456789";
      * string sub1 = s.substr(5);        只有一个数字5表示从下标为5开始一直到结尾:sub1 = "56789"
      * string sub2 = s.substr(5, 3);     从下标为5开始截取长度为3位:sub2 = "567"
      * a.size()是取有几个元素的意思
      * 代码本身就是从反向输出每一个substr的子字符串,将第一个字符从一开始就存起来一直到a.size()等于1时
      * ,开始逐渐从最后一个输出。
      * 
  • 0
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 C 语言中,可以通过指针和引用传递来交换字符串。下面是一个使用指针传递的代码示例: ```c #include <stdio.h> void swap(char **str1, char **str2) { char *temp = *str1; *str1 = *str2; *str2 = temp; } int main() { char *str1 = "Hello"; char *str2 = "World"; printf("Before swapping: str1 = %s, str2 = %s\n", str1, str2); swap(&str1, &str2); printf("After swapping: str1 = %s, str2 = %s\n", str1, str2); return 0; } ``` 输出: ``` Before swapping: str1 = Hello, str2 = World After swapping: str1 = World, str2 = Hello ``` 在这个示例中,`swap()` 函数使用指向指针的指针,即 `char **` 类型的参数。然后,它通过交换指针的值来交换字符串。在 `main()` 函数中,我们传递了 `str1` 和 `str2` 的地址,以便在 `swap()` 函数中进行修改。 同样,我们也可以使用引用传递来交换字符串。下面是一个使用引用传递的代码示例: ```c #include <stdio.h> void swap(char *&str1, char *&str2) { char *temp = str1; str1 = str2; str2 = temp; } int main() { char *str1 = "Hello"; char *str2 = "World"; printf("Before swapping: str1 = %s, str2 = %s\n", str1, str2); swap(str1, str2); printf("After swapping: str1 = %s, str2 = %s\n", str1, str2); return 0; } ``` 输出: ``` Before swapping: str1 = Hello, str2 = World After swapping: str1 = World, str2 = Hello ``` 在这个示例中,`swap()` 函数使用引用参数,即 `char *&` 类型的参数。然后,它通过交换指针的值来交换字符串。在 `main()` 函数中,我们直接传递 `str1` 和 `str2` 的引用,以便在 `swap()` 函数中进行修改。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值