Cpper
C/C++高级工程师 Android高级软件工程师 IT集成工程师 音频工程师 熟悉c,c++,java,c#,py,js,asp等多种语言 程序猿
一道中兴笔试题
要求是抠出给定字符串中的所有数字然后排序输入
做法如下:
#include <cstdlib>
#include 
<iostream>
#include 
<string.h>
#include 
<ctype.h>
#include 
<algorithm>
#include 
<iterator>

using namespace std;

void output(char* str,int len)
{  
   
if(str == NULL || len <= 0)
       
return
   
int* data = (int*)malloc(len);
   
char* tmp = (char*)malloc(len+1);
   memset(data,
0,len);
   memset(tmp,
0,sizeof(char)*len);
   
int index = 0;
   
int i = 0;
   
int j = 0;
   
int flag = isdigit(str[0]);
   
   
while(1)
   {  
      
if(i==len || i+== len+1)
          
break;   
      
if(isdigit(str[i+j]) == 0 && flag == 0)
      {   
          i
=i+j+1;
          j
=0;
          flag 
= isdigit(str[i+j]);       
      } 
      
else if(isdigit(str[i+j]) == 0 && flag != 0)
      {   
          memset(tmp,
0,sizeof(char)*(len+1));  
          strncpy(tmp,str
+i,j);
          data[index
++= atoi(tmp);
          flag 
= 0;
      }  
      
else
      {
          j
++;       
      }    
   }
   
   std::sort(data,data
+index);
   std::copy(data,data
+index,std::ostream_iterator<int>(std::cout," "));
   free(tmp);
   free(data);       
}

int main(int argc,char *argv[])
{   
    
char input[] = "33k&99+r5sw1f10gd4vc511gc3";
    output(input,strlen(input));
    system(
"PAUSE");
    
return EXIT_SUCCESS;
}
严格说来不应该使用stl中的函数和模板但是为了简便起见还是这么写吧
 
另外一直我一直己写strcpyn函数用于复制给定字符串没发现库中有一个类型的strncpy函数

posted on 2011-03-10 10:01 ccsdu2009 阅读(2135) 评论(1)  编辑 收藏 引用 所属分类: 杂项
Comments

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理