题目:编写一个C函数,将”I am from shanghai ”倒置为”shanghai from am I”,及将句子中的单词位置倒置,而不改变单词内部结构。
源代码如下:
#include <stdio.h>
#include <string.h>
#define MAX 100
int rev(char ch[])
{
char temp;
int i,j;
int strl = strlen(ch); //strlen()可以求出字符串长度,使用必须包含string.h的头文件
int count = 0;
//逆序字符串
for (i = 0; i < strl / 2; i++)
{
temp = ch[i];
ch[i] = ch[strl - 1 -i];
ch[strl - 1 - i] = temp;
}
//再逆序每一个单词
for (i = 0; i <= strl; i++)
{
if (ch[i] == ' ' || ch[i] == '\0') //扫描空格或空字符
{
for (j = 0; j < count / 2; j++) //逆序每一个单词
{
temp = ch[i - 1 - j];
ch[i - 1 - j] = ch[i - count + j];
ch[i - count + j] = temp;
}
count = -1;
}
count++;
}
return 0;
}
int main()
{
char str[MAX];
int i = 0;
printf("input a string:");
fgets (str,MAX,stdin);
while (str[i] != '\0') //去掉换行符
{
if (str[i] == '\n')
{
str[i] = '\0';
}
i++;
}
rev (str);
printf("字符串倒置后为:%s\n",str);
return 0;
}