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

华为机试2013届上机--子串分离

2015-07-29 11:18 369 查看
题目一:子串分离 

题目描述:   
通过键盘输入任意一个字符串序列,字符串可能包含多个子串,子串以空格分隔。请编写一个程序,自动分离出各个子串,并使用’,’将其分隔,并且在最后也补充一个’,’并将子串存储。 
如果输入“abc def gh i        d”,结果将是abc,def,gh,i,d, 
 
要求实现函数:   
void DivideString(const char *pInputStr, long lInputLen, char *pOutputStr); 
 
【输入】  pInputStr:  输入字符串 
          lInputLen:  输入字符串长度                   
【输出】  pOutputStr:  输出字符串,空间已经开辟好,与输入字符串等长; 
【注意】只需要完成该函数功能算法,中间不需要有任何IO 的输入输出 
示例   
输入:“abc def gh i        d”
输出:“abc,def,gh,i,d,”

下面是自己写得程序,可能会有一些小问题

#include <iostream>
#include <string>
using namespace std;
void DivideString(const char *pInputStr, long lInputLen, char *pOutputStr)
{
int i;
for(i=0;i<lInputLen;i++)
{
if(*pInputStr!=' ')
*pOutputStr++=*pInputStr++;
else  if(*pInputStr++==' '&&*pInputStr!=' ')  //注意pInputStr的值的变化,即使不符合本行的条件,也执行了pInputStr加1的命令
*pOutputStr++=',';
}
*pOutputStr++=',';
*pOutputStr=NULL;
}
int main()
{
const int Size=10000;
long Strlen;
char str[Size];
cin.getline(str,Size);
Strlen=strlen(str);
char *pc=new char[Size];
DivideString(str,  Strlen, pc);
cout<<pc<<endl;
delete [] pc;
return 0;
}


测试结果



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C++ 华为机试