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

李洋疯狂C语言之将”you are come from shanghai ”倒置为”shanghai from come are you”,将句子中的单词位置倒置,而不改变单词内部结构

2017-07-17 16:44 337 查看
题目: 编写一个C函数,将”you are come from shanghai ”倒置为”shanghai from come are you”,及将句子中的单词位置倒置,而不改变单词内部结构

#include <stdio.h>
#include <string.h>
void change(char *p1, char *p2);
//函数声明
int main()
{
char str[] = {"you are come from shanghai"};
char* p1 = str;
char* p2 = str + strlen(str) - 1;
char* p3 = NULL;

change(p1, p2);      //全部逆序先
p2 = str;            //p1,p2全部指向字符串开头

while (*p2)          //p2向前移动,未到‘\0’时执行循环
{
if (' ' == *p2)  //遇到空格,则将p1到p3间的逆序
{
p3 = p2 - 1;
change(p1, p3);
p1 = p2 + 1;   //p2遇到空格后,p1指向空格后第一个单词
}
p2++;
}

if (0 == *p2)         //当p2到最后,将最后一个单词逆序
{
p3 = p2 - 1;
change(p1, p3);
}
puts(str);            //输出变换后的字符串

return 0;
}

void change(char *p1, char* p2)     //执行逆序
{
char tmp;
while (p1 < p2)
{
tmp = *p1;
*(p1++) = *(p2);
*(p2--) = tmp;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐