c关于撤销一个句子的程序

时间:2011-01-16 11:34:31

标签: c string

  

可能重复:
  Given an array of characters which form a sentence of words, give an efficient algorithm to reverse the order of the words (not characters) in it

例如,如果我输入“This is a string” 我应该得到输出为“字符串a是这个” 我无法知道如何做到这一点

3 个答案:

答案 0 :(得分:9)

首先将字符串反转到位

然后将每个单词翻转到位(单词用空格分隔)

答案 1 :(得分:1)

您需要找到所有单词,然后以相反的顺序打印它们。记住它们被空格隔开。 ;)

答案 2 :(得分:1)

#include<stdio.h>
void Reverse(char *,char * );

 char str[100];

void main(){

char *start,*end,i=0;

printf("\nEnter: ");

scanf("%[^\n]s",str);        //similar to gets()

start=str;

while(*(str+i)!='\0') i++;

end=str+i-1;


Reverse(start,end);

printf("\nstr:%s",str);

end=str;

for(i=0;*(str+i)!='\0';i++){


  if(*(str+i)==' ' ){
     Reverse(start,end-1);
     start=end+1;
     end=start;
     continue;
  }
  end++;
}

Reverse(start,end-1);

printf("\nstr:%s",str);  

  }

 void Reverse(char *start,char *end){

char temp=0,i=0;

while(start<end) {

  temp=*start;

  *start=*end;

  *end=temp;

  start++;

  end--; 

}

}