码迷,mamicode.com
首页 > 其他好文 > 详细

[2013] 字符串(1)

时间:2014-06-13 18:14:18      阅读:258      评论:0      收藏:0      [点我收藏+]

标签:des   style   class   blog   code   java   

笔试题目(机试,共两题) 
题目一:子串分离 
题目描述:   
通过键盘输入任意一个字符串序列,字符串可能包含多个子串,子串以空格分隔。请编写一个程序,自动分离出各个子串,并使用’,’将其分隔,并且在最后也补充一个’,’并将子串存储。 
如果输入“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,”

我编写的程序:并没有定义新的指针,还是用原先的输入指针pInputStr和原先的输出指针pOutputStr

         用i标记指针的增长量(遍历到哪个字符了),iStart标记每个子字符串的开始,subLen标记每个子字符串的长度

bubuko.com,布布扣
void DivideString(const char* pInputStr , long lInputLen , char* pOutputStr)  
{ 
    long j = 0,subLen=0,iStart;

    for(long i=0;i<lInputLen;)
    {
       while(pInputStr[i]== )//跳过字符串前面的空格
           i++;
       
       iStart = i;  //标记子串的开始iStart和子串的长度subLen
       
       while(pInputStr[i]!= &&pInputStr[i]!=\0)//这里i的范围有可能超过lInput,所以要加上这一句pInputStr[i]!=‘\0‘
       {
          subLen++;
          i++;
       }
       while(subLen)//subLen已经变为0   
       {   //注意i++这些可以在赋值时用减少代码量(如下句),在while循环条件中就不要直接用了(往往多加减了一次)
         pOutputStr[j++] = pInputStr[iStart++];
         subLen--;
       }
       if(pInputStr[i]!= \0)//如果全都是空格,则不要输出逗号,如果末尾有空格,也不要再加逗号
          pOutputStr[j++] = ,;  
    }
    pOutputStr[j] = \0;    
}
bubuko.com,布布扣

 

[2013] 字符串(1),布布扣,bubuko.com

[2013] 字符串(1)

标签:des   style   class   blog   code   java   

原文地址:http://www.cnblogs.com/Xylophone/p/3784419.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!