实例要求:
- 输入1:
this is a book
- 输出1:
koob a si siht
- 输出2:
book a is this
代码如下:
#include<stdio.h>
int main(int argc ,const char *argv[]){
char s[20] = {0};
printf("输入1:");
gets(s);
//先找最后一个字符的下标
int i = 0;
while(s[i] != '\0'){
i++;
}
//上面循环结束时,i指向字符串s的'\0'
i--;//字符串s的长度
/*
//方法一 利用for循环遍历字符串字符实现
for( ;i >= 0;i--){
printf("%c",s[i]);
}
*/
/*
//方法二 利用while循环实现
int j = 0;
while(j<i){
char temp = s[i];
s[i] = s[j];
s[j] = temp;
j++;
i--;
}
puts(s);
*/
//方法三 利用for循环实现
int j = 0;//交换字符串的前后字符
for(j=0;j<i;j++){
char temp = s[i];
s[i] = s[j];
s[j] = temp;
i--;
}
printf("输出1:");
puts(s);//第一次输出
i = 0;
j = 0;
int k = 0;
while(1){
//统计一个单词的长度
while(s[i]!= ' '&& s[i]!='\0'){
//或者使用s[i]!=32&&s[i]!=0
i++;
}
k = i;// 上面循环结束时,i指向字符串里单词后面的空格符或者终止符
i--;//计算单词的长度
//对逆序的单词进行正序排列
while(j<i){
char key = s[i];
s[i] = s[j];
s[j] = key;
j++;
i--;
}
if(s[k] =='\0'){
//或者使用 s[k]==0;
//完成了所字符串里所有单词的翻转
break;
}
i=k+1;
j=k+1;
}
printf("输出2:");
puts(s);//第二次输出
return 0;
}
运行结果: