蓝桥杯-反转串

来源:互联网 发布:google picasa mac 编辑:程序博客网 时间:2024/06/05 19:55

反转串

我们把“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)   (比较变态)

可能有许多写法,代入到源程序,看运行结果。
[cpp] view plain copy
  1. #include<iostream>  
  2. using namespace std;  
  3.                     //指针  
  4. void reverse_str(char* buf, int n)  
  5. {  
  6.     if(n<2) return;  
  7.     char tmp = buf[0];  
  8.     buf[0] = buf[n-1];  
  9.     buf[n-1] = tmp;  
  10.     reverse_str(buf+1,n-2);  
  11. }             //指针+1  
  12. int main()  
  13. {  
  14.   
  15.     int n;  
  16.   
  17.     cin>>n;  
  18.   
  19.     char buf[n];  
  20.     int i;  
  21.     for(i=0;i<n;i++){  
  22.        cin>>buf[i];  
  23.     }  
  24.     reverse_str(buf,n);  
  25.   
  26.      for(i=0;i<n;i++){  
  27.         cout<<buf[i];  
  28.     }  
  29.   
  30.   
  31.     return 0;  
  32.   
  33. }  
0 0
原创粉丝点击