C++ 实现句子中单词逆序输出
2014-08-03 23:16
676 查看
上次有个同事说面试的时候有这样一个上机题,就是把一个句子中的单词逆序输出,应该考的就是字符数组的操作,闲来没事自己把这个小程序写了一遍。
#include "Function.h"
#define MAX_CHAR_NUM 255
/************************************************************************/
/* Function:将英文句子中的单词反转输出,如'hello world' 反转后'world hello';
/* 注:如果输入语句的前后都有空格,则空格也会在语句中反转如' hello world' 翻转后'world hello '
/* Parameter: *pInputSentence将要被反转的句子,支持最大长度为255个字节
/* Return: char* 反转后的字符串
/************************************************************************/
char* ReverseWord(char *pInputSentence)
{
if (NULL == pInputSentence)
{
return NULL;
}
int len = strlen(pInputSentence); //获取输入字符串的长度
if (MAX_CHAR_NUM - 1 < len) //转换最大支持数
{
return NULL;
}
int index[MAX_CHAR_NUM]; //用来保存空格与字符转变的位置
char pOutputSentence[MAX_CHAR_NUM] = {0};
int ibegin = 0; //空格与字符转变的次数
index[0] = 0; //记录输入字符串的第一个字符位置
for(int k = 1; k < len; k++)
{
if (pInputSentence[k] == ' ' && pInputSentence[k - 1] != ' ') //空格转变成字符
{
ibegin++;
index[ibegin] = k; //记录位置
}
if (pInputSentence[k] != ' ' && pInputSentence[k - 1] == ' ') //字符转变成空格
{
ibegin++;
index[ibegin] = k; //记录位置
}
}
ibegin++;
index[ibegin] = len; //记录输入字符串的最后一个字符(\0)的位置
int rev = 0; //输入字符串的字符位置
for (int a = ibegin; a > 0; a--)
{
for (int b = index[a - 1]; b < index[a]; b++)
{
pOutputSentence[rev++] = pInputSentence[b];
}
}
pOutputSentence[MAX_CHAR_NUM] = '\0'; //输出字符串最后补上'\0',以防万一
return pOutputSentence;
}
测试main函数
#include "Function.h"
#include <iostream>
using namespace std;
int main()
{
char input[] = "You never konw how much you love somebody until she's with other guy";
cout << "Before reversing the sentence:" << endl;
cout << input << endl;
char output[255] = {0};
char *pOutput = ReverseWord(input);
cout << "After reversing the sentence:" << endl;
cout << pOutput << endl;
}
#include "Function.h"
#define MAX_CHAR_NUM 255
/************************************************************************/
/* Function:将英文句子中的单词反转输出,如'hello world' 反转后'world hello';
/* 注:如果输入语句的前后都有空格,则空格也会在语句中反转如' hello world' 翻转后'world hello '
/* Parameter: *pInputSentence将要被反转的句子,支持最大长度为255个字节
/* Return: char* 反转后的字符串
/************************************************************************/
char* ReverseWord(char *pInputSentence)
{
if (NULL == pInputSentence)
{
return NULL;
}
int len = strlen(pInputSentence); //获取输入字符串的长度
if (MAX_CHAR_NUM - 1 < len) //转换最大支持数
{
return NULL;
}
int index[MAX_CHAR_NUM]; //用来保存空格与字符转变的位置
char pOutputSentence[MAX_CHAR_NUM] = {0};
int ibegin = 0; //空格与字符转变的次数
index[0] = 0; //记录输入字符串的第一个字符位置
for(int k = 1; k < len; k++)
{
if (pInputSentence[k] == ' ' && pInputSentence[k - 1] != ' ') //空格转变成字符
{
ibegin++;
index[ibegin] = k; //记录位置
}
if (pInputSentence[k] != ' ' && pInputSentence[k - 1] == ' ') //字符转变成空格
{
ibegin++;
index[ibegin] = k; //记录位置
}
}
ibegin++;
index[ibegin] = len; //记录输入字符串的最后一个字符(\0)的位置
int rev = 0; //输入字符串的字符位置
for (int a = ibegin; a > 0; a--)
{
for (int b = index[a - 1]; b < index[a]; b++)
{
pOutputSentence[rev++] = pInputSentence[b];
}
}
pOutputSentence[MAX_CHAR_NUM] = '\0'; //输出字符串最后补上'\0',以防万一
return pOutputSentence;
}
测试main函数
#include "Function.h"
#include <iostream>
using namespace std;
int main()
{
char input[] = "You never konw how much you love somebody until she's with other guy";
cout << "Before reversing the sentence:" << endl;
cout << input << endl;
char output[255] = {0};
char *pOutput = ReverseWord(input);
cout << "After reversing the sentence:" << endl;
cout << pOutput << endl;
}
相关文章推荐
- C++实现英文句子中的单词逆序输出的方法
- C++实现单词逆序输出
- 英文句子按单词反序输出的C++实现代码
- C语言实现句子单词逆序输出
- Java实现英文句子中的单词顺序逆序输出的方法
- C++实现string类字符串单词的逆序输出
- 【笔记】句子中单词逆序输出
- 再论句子中单词的逆序输出
- 栈的Java实现与单词逆序输出
- C++实现一句英文句子中的单词逆置
- 词组缩写 英语句子所有单词首字母大写输出 C语言/C++编程题
- 递归实现字符串逆序输出(c++和c)
- C++ 字符数组的拷贝、拼接、逆序输出 函数的实现
- 使用栈实现单词逆序输出
- C++ 二维字符串数组 实现多组字符串逆序输出
- C++实现读取文件,输出单词
- 再论句子中单词的逆序输出
- C++刷题——2286: 逆序输出单词(串)
- c++之 字符串 中的单词逆序输出
- java实现单词逆序输出