昨天我做了一个代码,用于交换字符串中彼此相邻的字母。举个例子:
input =“lalala”,output =“alalal”。或输入“bark”,output =“arkb”。 “b”在“a”旁边,我们互换。现在“b”在“r”旁边,我们再次交换。等等..
今天我尝试再次尝试,但没有循环和“void(char * x)”函数。 我真的搞砸了,我想弄清楚我怎么能在功能中表达替换。我知道它是这样的: 温度= STR1; STR1 = STR2; STR2 =温度;
在当前代码中我只能反转字符串,但我不知道如何使用“temp [1]”参数......一些解释会有很大的帮助! :)
#include <iostream>
#include <cstring>
#include <cmath>
#include <cstdlib>
using namespace std;
void swapper(char* str){
char temp[1];
if(*str){
swapper(str+1);
cout << *str;}
}
int main (){
char str[6] = "angel";
cin >> str;
char temp[1];
swapper(str);
}
答案 0 :(得分:0)
我知道你想写一个采用C风格字符串并将第一个字符移动到最后一个位置的方法,即“abcde” - &gt; “BCDEA”。循环是这里最简单的方法,但如果你想使用重复,你需要编写
#include <iostream>
using namespace std;
void swapper(char* ptr)
{
if(*(ptr + 1)) //if ptr points to the last character, the next one is '\0' and the recurrence should end
{
//swap currant character with the next
char temp = *ptr;
*ptr = *(ptr + 1);
*(ptr + 1) = temp;
//alternatively, you can use ptr[0] and ptr[1] instead of *ptr and *(ptr + 1), it's exactly the same thing
//call swapper on the remainder of the string
swapper(ptr + 1);
}
}
int main ()
{
char str[6] = "angel";
swapper(str);
cout << str;
}