题目:将字符串倒过来,但单词顺序要正确,并输出。
#include<stdio.h>
#include<string.h>
int main()
{
int len;
char str[]="you are from nanjing"; //输入需要反置的字符串
len=strlen(str); //测量字符串的长度
Exchange(str,len); //传入字符串和字符串的长度
exchange(str); //将更改后的倒置字符串传入
printf("%s\n",str);
return 0;
}
void Exchange(char *str,int len) //函数作用是将字符串的内容倒置
{
char temp,s;
for(int i=0;i<len/2;i++)
{
temp=str[i];
str[i]=str[len-i-1];
str[len-i-1]=temp; //利用中间值和循环将字符串完全倒置
}
}
void exchange(char* str) //由于需要单词顺序正确,所以通过空格和字符串内容终止符来判断是否为一个单词,再传入内容倒置的函数
{
int len=0;
int start=0;
for(int i=0;i<=strlen(str);i++)
{
if(str[i]==' '||str[i]=='\0') //判断是否为一个单词
{
Exchange(str+start,len); //传入str+start为单词的开头,len为单词的长度,意思是数组从传 入的这个地址开始反置,到这个单词反置完后结束
start=start+len+1; //单词在字符数组中的位置为上一个单词的开头+上一个单词的长度+1 (空格的长度)
len=0; //重置为0,存储下一个单词的长度
}
else{
len++; //只有不是空格或者终止符就一直+1,存储单词的长度
}
}
}