您的位置:首页 > 编程语言 > C语言/C++

"输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。 句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。 例如输入“I am a student.”,则输出“student

2017-12-29 12:52 961 查看
#include <stdio.h>
#include <string.h>

void str_reverse(char *start, char *end)
{
char temp;
while(start < end)
{
temp = *start;
*start = *end;
*end = temp;
start ++;
end --;
}
}
char * str_reverse(char *sen)
{
char *start=sen, *end=sen+strlen(sen)-1;
str_reverse(start, end);  //先反转整个句子
//"!tneduts a ma I ,olleh"
end=start;
while(*start != '\0')
{
if(*end == ' '|| *end == '\0')
{
str_reverse(start, end-1);
if(*end == '\0')
{
break;
}
end += 1;
start = end;
}
else
{
++ end;
}
}

return sen;
}

int main()
{
char str[] = "hello, I am a student!";
char *res = str_reverse(str);
printf("%s\n",res);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C语言
相关文章推荐