【发布时间】:2016-03-13 12:53:09
【问题描述】:
昨天我做了一个代码来交换字符串中彼此相邻的字母。举个例子:
输入=“拉拉拉”,输出=“拉拉拉”。或输入“bark”,输出=“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);
}
【问题讨论】:
-
我有点不确定你的“交换”……你不是把第一个字符移到最后吗?
-
你确定递归的
swapper()调用吗? -
我也不确定,但我对 c++ 真的很陌生,我只习惯于使用 int 函数或字符串函数“返回值”.. 有没有可能我在这个函数中调用另一个函数,然后使用我上面使用的递归来表达“交换”?
-
你想达到什么目标?循环似乎是正确的方法。如果您想做一个全递归交换器,您可能必须将输入限制为长度为 2 的幂的字符串。然后你可以递归地交换字符串的每一半,直到你得到单个字符。
-
你没有交换任何东西,你只是在打印字符。任何地方也没有名为“temp”的参数。