回 帖 发 新 帖 刷新版面

主题:[讨论]字符串倒置

[color=000080][size=3][b]请高手帮忙,求一个字符串倒置思路,例如:输入“abc def”,那么输出:“cba fed”。如何实现啊?有代码最好。[/b][/size][/color][em10]

回复列表 (共5个回复)

沙发

[code]       
 for (j=0; j<m; j++){
             while(1){
                  scanf ("%s",a);
                  len=strlen (a);
                  str_rev (a,len);
                  printf ("%s", a);
                  ch=getchar ( );
                  if (ch == '\n'){
                      printf ("\n");
                      break;
                  }//读入;
 void str_rev(char a[],int n)
{
 int i,j;
 char tmp;
 for(i=0,j=n-1;i<j;i++,j--)
 {
   tmp=a[i];
   a[i]=a[j];
   a[j]=tmp;
  }//倒置的一个函数;

[/code]

上面两个就是核心的代码了,其他你自己补上

板凳

好像不对呦!你想得太简单了。

3 楼

哪里不对? 不是就一个单词倒置么

4 楼

定义倒置函数。。。搜索字符串记录位置,碰到空格就记录右边位置然后倒置。。

5 楼

[code]
#include <iostream>
using namespace std;
const int N = 100;
char str[N];

void change(int start, int end) {
    int i, j;
    for(i = start, j = 0; j < ((end - start) >> 1); ++i, ++j) {
        swap(str[i], str[end - j - 1]);
    }
}

int main() {
    int i, j, start, end;
    gets(str);
    for(i = 0; i < strlen(str); ++i) {
        for(j = i; str[j] != ' ' && j < strlen(str); ++j);
        start = i; end = j;
        change(start, end);
        i = end;
    }
    for(i = 0; i < strlen(str); ++i)
        printf("%c", str[i]);
    printf("\n");
    return 0;
}
    
    
    
[/code]

我来回复

您尚未登录,请登录后再回复。点此登录或注册