例如输入―I am a student ,则输出―student. a am I
思路分析: 先将所有字符全部反转,则成 tnedutS a ma I ,然后把每个单词再一次反转即可,这样负负地正!
*/
void inverse(char aa[] ,int start ,int end){ //将所有字符反转,然后一直调用这个函数!
int k=0;
char tmp;
for(k=0;k<(end- start)/2 +1;k++){
tmp = aa[start+k];
aa[start+k] = aa[end-k];
aa[end-k] = tmp;
}
}
void roll(){
char aa[100]={0};
char a;
int i=0,j;
while( (a = getchar()) !='\n'){
aa[i]=a;
i++;
}
printf("输入字符串长度为:%d",i);
printf("\n");
inverse(aa , 0, i-1);
j=0;
for(j=0;j< i; j++)
printf("%c",aa[j]);
printf("\n");
//现在已经镜像转换完毕!接下来如何把每个单词来反转。
int k=0;
int start=0;
int n= -1;
for(k=0 ; k< i; k++)
{
if (aa[k] == ' ') {
n=k;
inverse(aa , start+1 , k-1);
}
else if(aa[k]!= ' ')
start =n;
if(k== i-1) //因为最后一个单词没有结束符号(空格)!所以得手动判断!
inverse(aa,start+1,k);
}
for(j=0;j< i; j++)
printf("%c",aa[j]);
printf("\n");
}
#include<stdio.h>
#include<string.h>
int main(){
roll();
return 0;
}