C语言学习历程——Training04字符串训练04

来源:互联网 发布:2016象棋软件排名 编辑:程序博客网 时间:2024/06/04 19:02

4. 题目:编写一个C函数,”I am from shanghai ”倒置为”shanghai from am I”;

 及将句子中的单词位置倒置,而不改变单词内部结构.


分析:可以先把字符串整体倒置,再把每个单词再倒置,就实现了功能。

下面是代码实现:


/************************************************************************
  题目: 编写一个C函数,将”I am from shanghai ”倒置为”shanghai from am I”;
  及将句子中的单词位置倒置,而不改变单词内部结构.
************************************************************************/


#include <stdio.h>


int mystrlen(const char *str)
{
int length = 0;


while (*str++)
{
length++;
}


return length;
}


void RevStr(char *str, int len)  //字符串倒置函数
{
int i = 0;
char temp = 0;


for (i = 0; i < len / 2; i++)
{
temp = str[i];
str[i] = str[len - i - 1];
str[len - i - 1] = temp;
}
}


void RevSen(char *str, int len)
{
int count = 0;


RevStr(str, len); //先整体倒置
printf ("str = %s\n", str);


while (*str)
{
if (*str == ' ')
{
RevStr(str - count, count); //再将每个单词倒置
str++;
count = 0;
}
count++;
str++;
}
RevStr(str - count, count); //处理最后一个单词
}


int main()
{
char str[] = "I am from shanghai";
int len = mystrlen(str);

RevSen(str, len);
printf ("The result is %s\n", str);


return 0;
}
0 0
原创粉丝点击