描述
将一句话的单词进行倒置,标点不倒置。比如 I like beijing. 经过函数后变为:beijing. like I
输入描述:
每个测试输入包含1个测试用例: I like beijing. 输入用例长度不超过100
输出描述:
依次输出倒置之后的字符串,以空格分割
示例1
输入:I like Beijing.
输出:Beijing. like I
思路
本题思路为:①先把整个字符串逆序②再把字符串中每个单词逆序
实现
#include<stdio.h>
#include<assert.h>
#include<string.h>
#define MAX 101
void reverse( char* left, char* right);//声明逆序函数
int main()
{
int k=0;
char str[MAX];
gets(str);
int len=strlen(str);
reverse(str, str+len-1);//整个字符串逆序
char*start=str;
while(*start)
{
char*end=start;
while(*end!='\0'&&*end!=' ')
{
end++;
}
reverse(start,end-1);//每个单词逆序
if(*end!='\0')
end++;
start=end;
}
int j;
for(j=0;str[j]!='\0';j++)//字符串输出
putchar(str[j]);
printf("\n");
return 0;
}
void reverse( char* left, char* right)//定义逆序函数
{
assert(left);//检验是否为空指针
assert(right);
while(left<right)
{
char temp=*left;
*left=*right;
*right=temp;
left++;
right--;
}
}