/************************************************************************/ /* 面4:一句話的單詞進(jìn)行倒置,標(biāo)點(diǎn)符號(hào)不倒換,比如一句話"i
come from nanjing"倒換后變成"nanjing from
come i".
*/ /************************************************************************/ #include<stdio.h> #include<iostream> using namespace std; void Reverse_Array( int begin, int end, char *str) { char temp; while(begin < end ) { temp=str[begin]; str[begin]=str[end]; str[end]=temp; end--; begin++; } } char * Reverse( char *str) { int j=0,i=0; int begin,end; char temp; j=strlen(str)-1; //第一步是進(jìn)行全盤翻轉(zhuǎn),將單詞變成
".gnijnan morf emoc i" //下面while循環(huán)和
Reverse_Array(i,j,str);是等價(jià)的 // while(j>i) // { // temp=str[i]; // str[i]=str[j]; // str[j]=temp; // j--; // i++; // } Reverse_Array(i,j,str); printf("全盤翻轉(zhuǎn)str=..>>
%s\n\n",str); i=0; //第二步 進(jìn)行部分翻轉(zhuǎn),如果不是空格,則開始翻轉(zhuǎn)單詞 while(str[i]) { if(str[i]!=' ')//查詢一個(gè)單詞的起點(diǎn)和終點(diǎn) { begin=i;//保存一個(gè)單詞的起點(diǎn) while(str[i]&&str[i]!=' ') { i++; } end=i-1;//保存一個(gè)單詞的終點(diǎn) } //下面while循環(huán)和
Reverse_Array(begin,end,str);是等價(jià)的 // while(end>begin) //記錄每個(gè)單詞的起點(diǎn)和始點(diǎn),并翻轉(zhuǎn) // { // temp=str[begin]; // str[begin]=str[end]; // str[end]=temp; // end--; // begin++; // } Reverse_Array(begin,end,str); //此時(shí)的i指向空格字符,為了繼續(xù)循環(huán),要i++,讓i指向下一個(gè)非空格字符 i++; printf("部分翻轉(zhuǎn)str=..>>
%s\n",str); } printf("\n",str); return str; } int main(void) { int j=0,i=0,flag=0,begin,end; char str[]="I
come from NanJing。",temp; j=strlen(str)-1; printf("初始string=.>>>
%s\n\n",str); char *str2 =
Reverse(str); printf("結(jié)果string222=.>>>
%s\n\n",str); return 0; } 初始string=.>>>
I come from NanJing。 全盤翻轉(zhuǎn)str=..>>
!gniJnaN morf
emoc I 部分翻轉(zhuǎn)str=..>>
NanJing。 morf emoc I 部分翻轉(zhuǎn)str=..>>
NanJing。 from emoc I 部分翻轉(zhuǎn)str=..>>
NanJing。 from come I 部分翻轉(zhuǎn)str=..>>
NanJing。 from come I 部分翻轉(zhuǎn)str=..>>
NanJing。 from come I 結(jié)果string222=.>>>
NanJing。 from come I Press any key to continue |
|