您的位置:首页 > 编程语言 > C语言/C++

反转串

2017-01-20 12:16 197 查看

反转串

我们把“cba”称为“abc”的反转串。

下面的代码可以把buf中的字符反转。其中n表示buf中待反转的串的长度。请补充缺少的代码。

把填空的答案(仅填空处的答案,不包括题面)存入考生文件夹下对应题号的“解答.txt”中即可。

void reverse_str(char* buf, int n)

{
if(n<2) return;
char tmp = buf[0];
buf[0] = buf[n-1];
buf[n-1] = tmp;
_______________________________;

}

利用递归把字符串的首尾交换,每次把指针+1,指向字符数组不同的地方,每次把字符数组的长度-2

参考答案:reverse_str(buf+1,n-2)

注意数组与指针的语法等价性:
  buf + 1 等价  &buf[1]

  reverse_str(++buf,n-2)   (比较变态)

可能有许多写法,代入到源程序,看运行结果。

#include<iostream>
using namespace std;
//指针
void reverse_str(char* buf, int n)
{
if(n<2) return;
char tmp = buf[0];
buf[0] = buf[n-1];
buf[n-1] = tmp;
reverse_str(buf+1,n-2);
}             //指针+1
int main()
{

int n;

cin>>n;

char buf
;
int i;
for(i=0;i<n;i++){
cin>>buf[i];
}
reverse_str(buf,n);

for(i=0;i<n;i++){
cout<<buf[i];
}

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息