题目要求:将一片文章中所有单词逆序。如:“you are the best , so you can make it ”---->"it make can you so , best the are you"
基本思路:先将文章中所有字符逆序,然后再将每个单词逆序
c语言具体实现如下(IDE: DEVC++5.7):
#include<stdio.h>
#include<stdlib.h>
void reverse(char *s,int offset,int end){
while(offset < end){
s[offset] = s[offset] ^ s[end];
s[end] = s[offset] ^ s[end];
s[offset] = s[offset++] ^ s[end--];
}
}
void reverse_word(char *s,int len){
reverse(s,0,len-2);
printf("按字符翻转:%s\n",s);
int p,q;
p = q = 0;
while(q < len){
if(s[q] == ' '){
reverse(s,p,q-1);//逐个单词翻转
p = q+1;
}
q ++;
}
reverse(s,p,q-2);//翻转最后一个单词
}
int main(){
char s[] = "you are the best , so you can make it";//字符串长度为14,但是包含15个字符,最后一个字符为' ',表示字符串的结束
char c[] = "abde";
printf("原始字符串:%s\n",s);
int length = sizeof(s)/sizeof(char);
reverse_word(s,length);
//reverse_word(c,length);
printf("按单词翻转:%s\n",s);
getchar();
return 0;
}