CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  新手乐园

前天去华为面试做不出的题目,哪位前辈能帮忙看看?

楼主cornsoup()2005-06-19 13:57:12 在 C/C++ / 新手乐园 提问

偶平时用惯了VC++   MFC,不知不觉硬把C++最基础的东西给丢了,郁闷啊  
  身边又没有书,恳请大伙指点指点。  
   
  1.请将字符串“abcdefgh"格式化为"hgfedcba",写出算法。  
   
  2.从字符串p中返回第x个q的地址,错误返回NULL。  
  char*   fun(char*   p,char   q,int   x)  
   
   
   
   
  问题点数:20、回复次数:39Top

1 楼llf_hust()回复于 2005-06-19 14:06:43 得分 0

1.请将字符串“abcdefgh"格式化为"hgfedcba",写出算法  
  int   Reverse(char   *s)  
  {  
        if(*s)  
              Reverse(s+1);  
              putchar(*s);  
  }  
   
  Top

2 楼fireman_lh()回复于 2005-06-19 14:07:18 得分 5

1.写成栈放进去,然后加到队列中?  
  2.char*   fun(   char*   p,   char   q,   int   x   )  
  {  
      int   i   =   0;  
      int   j   =   0;  
   
      if   p   ==   NULL  
          return   NULL;  
   
      while(   p[i]   !=   '\0'   )  
      {  
            if(   p[i]   ==   q   )  
                j++;  
            if   j   ==   x  
                  return   &p[i];  
            i++;  
        }  
   
        if   p[i]   ==   '\0'  
              return   NULL;  
        }  
  小弟才疏学浅,随便写的,如果有低级错误的地方,各位不要笑话^_^  
  Top

3 楼zhousqy(标准C匪徒)(甩拉,甩拉)回复于 2005-06-19 14:09:23 得分 0

基础很重要。Top

4 楼cornsoup()回复于 2005-06-19 14:25:04 得分 0

是啊,不能把基础给丢了,谢谢各位提携!Top

5 楼mylovelypig(猪的魅力!......)回复于 2005-06-19 16:40:30 得分 0

这么基本的东西没搞懂还敢去华为面试呀?  
  第一个非常简单呀,用系统函数Reverse可实现;  
  如果非要自己写实现算法的话,那么无非就是考数据结构的基本内容,  
  根据栈的后进先出(或说先进后出)原理,可用栈实现!  
  Top

6 楼OpenHero(开勇)回复于 2005-06-19 16:48:07 得分 0

~~~~我怎么没有面试的机会????Top

7 楼mostideal(三甲)回复于 2005-06-19 17:12:44 得分 0

dingTop

8 楼fg100emil(fg100大鸟)回复于 2005-06-19 21:39:51 得分 5

第一题   如果是要考你数据结构的话  
  你可以试试这个   递归调用     应该罩住了     ^-^  
   
  #include<iostream>  
   
  using   namespace   std;  
   
  void   ss(char   *str)  
  {if(*str=='\0')           //        
      return;                       //       这两行可以改成   if(*str)  
      ss(str+1);  
      cout<<*str;  
  }  
   
  void   main()  
  {  
  char   *s="abcdefgh";  
  ss(s);  
  cout<<endl;  
  }  
  Top

9 楼zixiu2008(子休)回复于 2005-06-19 22:25:38 得分 0

第一题是什么意思?  
   
  逆序还是降序排序?Top

10 楼yhbttfile(小兵)回复于 2005-06-19 23:00:24 得分 10

to     fireman_lh()   :  
   
  根据你的代码,做了稍微的修改:  
  char*   fun(   char*   p,   char   q,   int   x   )  
  {  
      if(p   ==   NULL)                   //   增加了括号  
          return   NULL;  
       
      unsigned   int   uiCount(0);     //   变量在使用是才定义,避免不必要的堆栈对象的初始化  
      char   c;  
      while((c   =   *p++)   !=   '\0')    
          if(c   ==   q)    
          {  
              ++uiCount;   //   使用++前操作符,避免临时对象的产生(可以看看++前操作符的实现细节)。  
              if(uiCount   ==   x)  
                    return   --p;  
          }  
      return   NULL;  
  }  
  Top

11 楼fg100emil(fg100大鸟)回复于 2005-06-19 23:27:20 得分 0

当然是逆序了  
  不是有题号么Top

12 楼sdut_hf(寒风)回复于 2005-06-20 09:08:59 得分 0

我晕  
  华为就考这样的题,不是把。。。Top

13 楼free000(无剑)回复于 2005-06-20 09:40:11 得分 0

void   FormatStr(char   *str,int   count)  
  {  
      char   *lpHead=str;  
      char   *lpTail=str+count-1;  
      for(;;)  
      {  
            if(lpHead>=lpTail)break;  
            char   c=*lpHead;  
            *lpHead=*lpTail;  
            *lpTail=c;  
            lpHead++;  
            lpTail--;  
      }  
   
  }Top

14 楼goodgoodwork(永不放弃)回复于 2005-06-20 09:43:48 得分 0

华为面试的题目都很基础Top

15 楼free000(无剑)回复于 2005-06-20 09:52:04 得分 0

char*   fun(char*   p,char   q,int   x)  
  {  
      int   count=0;  
      char   *lpC=p;  
      for(;*lpC!='\0';lpC++)  
      {  
          if(*lpC==q)  
          {  
              count++;  
              if(count==x)return   lpC;  
          }    
      }  
      return   NULL;  
  }Top

16 楼Microsnow(冰火)回复于 2005-06-20 09:58:50 得分 0

对不起,在C++   Builder版中的第一题写错一个地方,在此版更正:  
  void   strformat(char   *strSour)  
  {  
          if   (strSour   ==   NULL)  
                  throw   "Invalid   argument";  
          int   len   =   strlen(strSour);  
          for(int   i=0;   i<len/2;   i++)  
          {  
                  char   temp   =   strSour[i];  
                  strSour[i]   =   strSour[len-i-1];  
                  strSour[len-i-1]   =   temp;  
          }  
          cout<<strSour<<endl;  
          getch();  
  }Top

17 楼nana_2005(娜娜)回复于 2005-06-20 10:11:17 得分 0

 
          考基础是要看你的编程习惯,看你是否考虑到程序的大小、运行效率、容错处理等等的吧?  
          老实说,我的基础也不好,都是用VC用的,标准C++   都忘光了。  
          汗颜哪  
  Top

18 楼xnlcx(J2EE.Net)回复于 2005-06-20 10:31:00 得分 0

 
  我也一样,经常用VC,什么数据结构差不多忘光了,自己基础也不好Top

19 楼lucymary1982()回复于 2005-06-20 10:45:55 得分 0

强啊,大家都Top

20 楼lgmdyh(廖国明)回复于 2005-06-20 11:10:40 得分 0

靠,我进华为的时候没有这么容易的题啊.建议看看数据结构吧!Top

21 楼wawage()回复于 2005-06-20 11:11:08 得分 0

方法多啊!!!厉害!Top

22 楼rick29(rick.z)回复于 2005-06-20 11:18:07 得分 0

题目说明了“逆置”么?没的话  
  if   (s   ==   "abcdefgh")   s   =   "hgfedcba";   return   s;Top

23 楼richen_99(品味生活)回复于 2005-06-20 11:32:34 得分 0

楼上的厉害!Top

24 楼aceouter(outer)回复于 2005-06-20 11:46:37 得分 0

第一题的解法还是llf_hust的最优雅啊!Top

25 楼ksndyjs()回复于 2005-06-20 11:54:49 得分 0

char*   fun(char*   p,char   q,int   x)  
  {  
  int   n=0;  
  while(*p)  
  {  
  if(q   ==   *p)  
  {  
  if(n++   ==   x)  
  return   p;  
  }  
  ++p  
  }  
  return   NULL;  
  }Top

26 楼csgo(第一次)回复于 2005-06-20 11:55:59 得分 0

为什么还要写算法,标准模板库调用现成的不就行了,还要那么麻烦干什么?Top

27 楼ksndyjs()回复于 2005-06-20 11:59:13 得分 0

递归有什么用,字符串本身又没变。  
  当然还是要倒置了。Top

28 楼ksndyjs()回复于 2005-06-20 11:59:45 得分 0

顺便问一句楼主,你去哪个华为面试的啊。华为现在不是不招人了吗Top

29 楼liem(阿明)回复于 2005-06-20 12:55:04 得分 0

2)   char   *   func(char   *p,char   q,int   x)  
  {  
          int   count=0;  
          while(*p&&t<x)  
          {  
                if(*p==q)   count++;  
                if(count<x)  
                          p++;  
          }  
          return   p;  
  }Top

30 楼brianlu(-)回复于 2005-06-20 14:22:42 得分 0

华为就他妈那么无聊,就考点垃圾题目。  
  去那里干吗呢?还是不要去的好。  
  华为很垃圾,从考题可以看出。Top

31 楼liuy21()回复于 2005-06-20 14:43:01 得分 0

进去干什么呢?Top

32 楼CSDNWW(中国软件WW)回复于 2005-06-20 15:50:00 得分 0

2)   char   *   func(char   *p,char   q,int   x)  
  {  
        if   (x   ==   0)    
              return   NULL;  
        .....  
        .....  
   
  }Top

33 楼zsh6709(世界上没有后悔药吃的!!!)回复于 2005-06-20 16:22:06 得分 0

#include<string>  
  #include<iostream>  
  using   namespace   std;  
  char*   fun(   char*   p,   char   q,   int   x   )  
  {  
      if(p   ==   NULL)                    
          return   NULL;  
       
      unsigned   int   uiCount(0);    
      char   c;  
      while((c   =   *p++)   !=   '\0')    
          if(c   ==   q)    
          {  
              ++uiCount;    
              if(uiCount==x)  
                    return   --p;  
          }  
      return   NULL;  
  }  
  void   main()  
  {  
  string   s;  
  char   a;  
  int   b;  
  cout<<"请输入字符串:"<<endl;  
  cin>>s;  
  cout<<"请输入字符串中的一个字符:"<<endl;  
  cin>>a;  
  cout<<"请输入出现该字符串的个数:"<<endl;  
  fun(s,a,b);  
  }  
   
  那我做的第2题,为什么有错误?  
  这个错误如何改动呢?Top

34 楼CSDNWW(中国软件WW)回复于 2005-06-20 16:22:49 得分 0

(1)  
  #include   <stdio.h>  
  #include<iostream>  
  using   namespace   std;  
   
  void   FormatStr(std::string   &str)  
  {  
  char   c;  
  int   len   =   strlen(str.c_str());  
  for(int   i   =   0;   i   <   (len   /2);   i++)  
  {  
  c=   str[i];  
  str[i]   =   str[len   -   i   -1];  
  str[len   -   i   -   1]   =   c;  
  }  
   
  }  
   
  main()  
  {  
  std::string   s1   ="abcdefghijklmnopqrstuvwxyz";  
  FormatStr(s1);  
  cout<<s1.c_str()<<endl;  
  getchar();  
  }  
   
  Top

35 楼FAICHEN(CC)回复于 2005-06-20 17:01:52 得分 0

第一题是微软的出的题目拉  
  原题是不能调用系统函数,考虑最小的分配空间,写出这个算法~  
   
  应用堆栈的写法,肯定不会被认可,10个程序员,有9个都会写~Top

36 楼ksrs(良子)回复于 2005-06-20 19:16:23 得分 0

不是吧,大哥,这样的问题用来面试?  
  Top

37 楼smltiger(罗小虎)回复于 2005-06-20 19:35:58 得分 0

晕,不是吧,这是C的基础题啊,根本不需要用到C++知识呵呵  
  我只做第一题,呵呵  
  char   s[]="abcdefg";  
  char   s1[8];  
  for(i   =   strlen(s)-1;   i   >=   0;   i++)  
        s1[7-i+1]   =   s[i];  
  s[7]   =   0;  
   
  QQ:28286880Top

38 楼niefuhua(阳光)回复于 2005-06-21 06:02:20 得分 0

upTop

39 楼bobobie(波波)回复于 2005-08-24 13:20:59 得分 0

markTop

相关问题

  • 前天去华为面试做不出的题目,恳请前辈指点指点
  • 前天去华为面试做不出的题目,恳请前辈指点指点
  • 华为面试题目探讨
  • 华为面试小题目大家看看
  • 华为面试?
  • 华为面试
  • 华为面试
  • 华为面试
  • 华为面试
  • 请教各位前辈:华为面试都有哪些方面的内容啊??

关键词

  • c++
  • 算法
  • null
  • uicount
  • 字符串
  • reverse
  • fun
  • 实现
  • cout
  • str

得分解答快速导航

  • 帖主:cornsoup
  • fireman_lh
  • fg100emil
  • yhbttfile

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo