英文句子语段颠倒输出:
例如:输入“I love programming” ,编写一个函数 ,输出“programming love I”.
//主函数///
#include <iostream>
#include "VecReverse.h"
using namespace std;
int main()
{
char pArr[] = "I love C++";
int nLen=sizeof(pArr)/sizeof(pArr[0])-1; //字符串以\0结尾。
VecInverse(pArr,nLen);
//输出元素
for (int i=0;i<nLen;i++)
{
cout<<pArr[i];
}
return 0;
}
下面代码放在VecReverse.h文件中。。。。。。
#include <iostream>
using namespace std;
void InterInverse(char *pArr,int start,int last); //申明InterInverse函数
void VecInverse(char *pArr, int nLen)
{
InterInverse(pArr,0,nLen);
int i=0,j=1;
for (;j<=nLen; j++)
{
if (pArr[j]==char(32)||pArr[j]=='\0') //为空格或者为空,已经结束。//如果中间有连词符号,在这就要加判断语句
{
InterInverse(pArr,i,j);
i=j+1;j=j+2; // 只考虑了每个单词之间只有一个空格。//如果有多个空格 嵌入一个for循环, 找到第一个非空格元素
}
}
}
void InterInverse(char *pArr,int start,int last) //使用的是左包含,右开区间。[start,last), 把在这个区间的元素颠倒。
{
char temp=0;
for (int i=start,j=last-1;j>=i;i++,j--)
{
temp=pArr[j];
pArr[j]=pArr[i];
pArr[i]=temp;
}
}