#include <stdio.h>
int main(int argc, const char *argv[])
{
//char s[32] = "this is a book";
char s[32] = {0};
gets(s);
printf("输入的为 :%s\n",s);
int i = 0;
int j = 0;
char temp = 0;
while(s[j] != '\0'){
j++;
}
j--;//回到\0前的一个字母 即最后一个字母
while(i < j){//判断交换的次数 不管字母为奇数还是偶数
temp = s[i];//用三杯水 实现头字母和尾字母逐个交换
s[i] = s[j];
s[j] = temp;
i++;
j--;
}
printf("整体翻转后的为 :%s\n",s);
//整体翻转后的为:koob a si siht
int k = 0;//用来记住 空格 或者 \0 的下标
i = 0;//i的位置变了 重置为初始位置
j = 0;//同理重置
while(s[j] != '\0'){//整个循环的停止条件为遇到\0
while(s[j] != ' ' && s[j] != '\0'){
j++;
}
k = j;//记录当前循环空格的下标
j--;//回到空格前或者\0前一个单词的尾字母
while(i < j){//判断交换的次数 不管字母为奇数还是偶数
temp = s[i];//用三杯水 实现头字母和尾字母逐个交换
s[i] = s[j];
s[j] = temp;
i++;
j--;
}
j = k + 1;
//j循环比较后位置变了 重置j的位置到下一个单词首字母
//为下一轮循环 j++移动到空格或\0位置做准备
i = k + 1;
//同理i的位置也重置到下一个单词的首字母
}
printf("每个单词翻转的为:%s\n",s);
return 0;
}
测试:
this is a book
输入的为 :this is a book
整体翻转后的为 :koob a si siht
每个单词翻转的为:book a is this