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

搜集面试题,大家分享~

楼主yinqing_yx(淘汰引擎)(玩虚一族)2006-03-30 16:08:46 在 C/C++ / 新手乐园 提问

马上毕业,搜集了些面试题准备准备,发出来有需要的朋友共同学习,找出最优算法~~~(没分,仅是学习)  
  1.实现双向链表删除一个节点P,在节点P后插入一个节点,写出这两个函数。    
   
  2.写一个函数,将其中的\t都转换成4个空格。    
       
  3.Windows程序的入口是哪里?写出Windows消息机制的流程。    
     
  4.如何定义和实现一个类的成员函数为回调函数?    
       
  5.C++里面是不是所有的动作都是main()引起的?如果不是,请举例。    
     
  6.C++里面如何声明const   void   f(void)函数为C程序中的库函数?    
  问题点数:20、回复次数:30Top

1 楼yinqing_yx(淘汰引擎)(玩虚一族)回复于 2006-03-30 16:22:37 得分 0

第2题:  
  char   *changeToSpac(char   *strDes,   const   char   *strSrc)  
  {  
  char   *addr   =   strDes;  
   
  while(*strSrc   !=   '\0')  
  {  
  if(*strSrc   ==   '\t')  
  {  
  for(int   i   =   0;   i   <   4;   i++)   *strDes++   =   '   ';  
  strSrc++;  
  }  
  else  
  {  
  *strDes++   =   *strSrc++;  
  }  
  }  
  return   addr;  
  }Top

2 楼yinqing_yx(淘汰引擎)(玩虚一族)回复于 2006-03-30 16:28:00 得分 0

3.Windows程序的入口是哪里?写出Windows消息机制的流程  
  入口winmain()函数  
  消息机制:  
  MSG   msg;  
  ZeroMemory(&msg,sizeof(MSG));  
  while(msg.message!=WM_QUIT)  
  {  
  if(PeekMessage(&msg,NULL,0,0,PM_REMOVE))   //进行主动查取消息,为else争取处理机会  
  {  
  TranslateMessage(&msg);   //分解消息  
  DispatchMessage(&msg);     //分发消息  
  }  
  else  
  {  
  //  
  }  
   
  }  
  然后通过窗口消息处理函数winprocess()进行消息判断,做响应执行~Top

3 楼lonelyforest(一生所爱)回复于 2006-03-30 20:00:50 得分 0

天哪,   这都是那儿的啊?   那家公司的题目啊?  
  5.C++里面是不是所有的动作都是main()引起的?如果不是,请举例。  
   
  不是!     在   main   前面定义一个类数据类型,   比如   ClassT   example;他有自己的构造函数,这个构造函数在main之前应该就开始执行了。  
  main   不过是一个程序的入口而已。   至于所有的动作呢,   那就多了,   用户也有动作嘛!Top

4 楼lonelyforest(一生所爱)回复于 2006-03-30 20:03:48 得分 0

2.写一个函数,将其中的\t都转换成4个空格。    
  应该是字符串中的吧?难道要遍历?   再进行插入?   比较麻烦吧。Top

5 楼LiHubei(lhb)回复于 2006-03-30 21:48:49 得分 0

学习Top

6 楼adad184(高圆圆)回复于 2006-03-30 22:05:44 得分 0

第2题  
   
  #define   \t   "         "  
  可以不?Top

7 楼adad184(高圆圆)回复于 2006-03-30 22:06:55 得分 0

5.C++里面是不是所有的动作都是main()引起的?如果不是,请举例。    
   
  比如     定义全局变量?  
     
  6.C++里面如何声明const   void   f(void)函数为C程序中的库函数?    
  extren   "C"   const   void   f(void);  
   
  Top

8 楼cutenoob(cute )回复于 2006-03-30 22:16:18 得分 0

第2题  
   
  #define   \t   "         "  
  可以不?  
  ====================  
  同问...Top

9 楼dream2013(每个人都有魔鬼的一面( http://blog.sina.com.cn/u/1422260677 ))回复于 2006-03-30 22:27:38 得分 0

markTop

10 楼Chulangzi(楚浪子-我要变强!)回复于 2006-03-30 23:32:26 得分 0

markTop

11 楼welfarefanwei(伟大)回复于 2006-03-31 07:56:46 得分 0

 
  好的,MarkTop

12 楼qiujian5628(浪迹天涯)回复于 2006-03-31 08:44:38 得分 0

markTop

13 楼cyblueboy83(爱情白痴—电脑迷)回复于 2006-03-31 08:59:33 得分 0

学习  
  Top

14 楼yinqing_yx(淘汰引擎)(玩虚一族)回复于 2006-03-31 09:34:23 得分 0

改变特定字符串     宏的范围是不是大了点~Top

15 楼jiang_xiao(原来秋天)回复于 2006-03-31 13:11:01 得分 10

1.   以下三条输出语句分别输出什么?[C易]  
  char   str1[]               =   "abc";  
  char   str2[]               =   "abc";  
  const   char   str3[]   =   "abc";    
  const   char   str4[]   =   "abc";    
  const   char*   str5     =   "abc";  
  const   char*   str6     =   "abc";  
  cout   <<   boolalpha   <<   (   str1==str2   )   <<   endl;   //   输出什么?  
  cout   <<   boolalpha   <<   (   str3==str4   )   <<   endl;   //   输出什么?  
  cout   <<   boolalpha   <<   (   str5==str6   )   <<   endl;   //   输出什么?  
   
  13.   非C++内建型别   A   和   B,在哪几种情况下B能隐式转化为A?[C++中等]  
  答:  
  a.   class   B   :   public   A   {   ……}   //   B公有继承自A,可以是间接继承的  
  b.   class   B   {   operator   A(   );   }   //   B实现了隐式转化为A的转化  
  c.   class   A   {   A(   const   B&   );   }   //   A实现了non-explicit的参数为B(可以有其他带默认值的参数)构造函数  
  d.   A&   operator=   (   const   A&   );   //   赋值操作,虽不是正宗的隐式类型转换,但也可以勉强算一个  
   
  12.   以下代码中的两个sizeof用法有问题吗?[C易]  
  void   UpperCase(   char   str[]   )   //   将   str   中的小写字母转换成大写字母  
  {  
          for(   size_t   i=0;   i<sizeof(str)/sizeof(str[0]);   ++i   )  
                  if(   'a'<=str[i]   &&   str[i]<='z'   )  
                          str[i]   -=   ('a'-'A'   );  
  }  
  char   str[]   =   "aBcDe";  
  cout   <<   "str字符长度为:   "   <<   sizeof(str)/sizeof(str[0])   <<   endl;  
  UpperCase(   str   );  
  cout   <<   str   <<   endl;  
   
  7.   以下代码有什么问题?[C难]  
  void   char2Hex(   char   c   )   //   将字符以16进制表示  
  {  
          char   ch   =   c/0x10   +   '0';   if(   ch   >   '9'   )   ch   +=   ('A'-'9'-1);  
          char   cl   =   c%0x10   +   '0';   if(   cl   >   '9'   )   cl   +=   ('A'-'9'-1);  
          cout   <<   ch   <<   cl   <<   '   ';  
  }  
  char   str[]   =   "I   love   中国";  
  for(   size_t   i=0;   i<strlen(str);   ++i   )  
          char2Hex(   str[i]   );  
  cout   <<   endl;  
   
  4.   以下代码有什么问题?[C++易]  
  struct   Test  
  {  
          Test(   int   )   {}  
          Test()   {}  
          void   fun()   {}  
  };  
  void   main(   void   )  
  {  
          Test   a(1);  
          a.fun();  
          Test   b();  
          b.fun();  
  }  
   
  5.   以下代码有什么问题?[C++易]  
  cout   <<   (true?1:"1")   <<   endl;  
   
  8.   以下代码能够编译通过吗,为什么?[C++易]  
  unsigned   int   const   size1   =   2;  
  char   str1[   size1   ];  
  unsigned   int   temp   =   0;  
  cin   >>   temp;  
  unsigned   int   const   size2   =   temp;  
  char   str2[   size2   ];  
   
  9.   以下代码中的输出语句输出0吗,为什么?[C++易]  
  struct   CLS  
  {  
          int   m_i;  
          CLS(   int   i   )   :   m_i(i)   {}  
          CLS()  
          {  
                  CLS(0);  
          }  
  };  
  CLS   obj;  
  cout   <<   obj.m_i   <<   endl;  
   
  10.   C++中的空类,默认产生哪些类成员函数?[C++易]  
  答:  
  class   Empty  
  {  
  public:  
          Empty();                                                     //   缺省构造函数  
          Empty(   const   Empty&   );                         //   拷贝构造函数  
          ~Empty();                                                   //   析构函数  
          Empty&   operator=(   const   Empty&   );   //   赋值运算符  
          Empty*   operator&();                               //   取址运算符  
          const   Empty*   operator&()   const;       //   取址运算符   const  
  };  
   
  3.   以下两条输出语句分别输出什么?[C++难]  
  float   a   =   1.0f;  
  cout   <<   (int)a   <<   endl;  
  cout   <<   (int&)a   <<   endl;  
  cout   <<   boolalpha   <<   (   (int)a   ==   (int&)a   )   <<   endl;   //   输出什么?  
  float   b   =   0.0f;  
  cout   <<   (int)b   <<   endl;  
  cout   <<   (int&)b   <<   endl;  
  cout   <<   boolalpha   <<   (   (int)b   ==   (int&)b   )   <<   endl;   //   输出什么?  
   
  2.   以下反向遍历array数组的方法有什么错误?[STL易]  
  vector   array;  
  array.push_back(   1   );  
  array.push_back(   2   );  
  array.push_back(   3   );  
  for(   vector::size_type   i=array.size()-1;   i>=0;   --i   )   //   反向遍历array数组  
  {  
          cout   <<   array[i]   <<   endl;  
  }  
   
  6.   以下代码有什么问题?[STL易]  
  typedef   vector   IntArray;  
  IntArray   array;  
  array.push_back(   1   );  
  array.push_back(   2   );  
  array.push_back(   2   );  
  array.push_back(   3   );  
  //   删除array数组中所有的2  
  for(   IntArray::iterator   itor=array.begin();   itor!=array.end();   ++itor   )  
  {  
          if(   2   ==   *itor   )   array.erase(   itor   );  
  }  
   
  11.   写一个函数,完成内存之间的拷贝。[考虑问题是否全面]  
  答:  
  void*   mymemcpy(   void   *dest,   const   void   *src,   size_t   count   )  
  {  
          char*   pdest   =   static_cast<char*>(   dest   );  
          const   char*   psrc   =   static_cast<const   char*>(   src   );  
          if(   pdest>psrc   &&   pdest<psrc+cout   )   能考虑到这种情况就行了  
          {  
                  for(   size_t   i=count-1;   i!=-1;   --i   )  
                                  pdest[i]   =   psrc[i];  
          }  
          else  
          {  
                  for(   size_t   i=0;   i<count;   ++i   )  
                          pdest[i]   =   psrc[i];  
          }  
          return   dest;  
  }  
  int   main(   void   )  
  {  
          char   str[]   =   "0123456789";  
          mymemcpy(   str+1,   str+0,   9   );  
          cout   <<   str   <<   endl;  
   
          system(   "Pause"   );  
          return   0;  
  }  
   
  Top

16 楼wofish2()回复于 2006-03-31 14:23:18 得分 0

markTop

17 楼giggsjw(秋叶)回复于 2006-03-31 16:16:32 得分 0

作个记号,慢慢学习!Top

18 楼yinqing_yx(淘汰引擎)(玩虚一族)回复于 2006-03-31 19:59:23 得分 0

是不是一个父类写了一个virtual   函数,如果子类覆盖它的函数不加virtual   ,也能实现多态?  
  virtual修饰符会被隐形继承的。  
  private   也被继承,只事派生类没有访问权限而已  
  virtual可加可不加子类的空间里有父类的所有变量(static除外)同一个函数只存在一个实体(inline除外)子类覆盖它的函数不加virtual   ,也能实现多态。  
  在子类的空间里,有父类的私有变量。私有变量不能直接访问。  
  ===================================================================  
  输入一个字符串,将其逆序后输出。  
  void   Swap(char   &lhs,   char   &rhs)  
  {  
  char   temp   =   lhs;  
  lhs   =   rhs;  
  rhs   =   temp;  
  }  
  char   *reserveStr(char   *strSrc)  
  {  
  char   *addr   =   strSrc;  
  int   left   =   0;  
  int   right   =   strlen(strSrc);  
  while(   left   !=   right   )  
  {  
  Swap(strSrc[left++],strSrc[--right]);  
  }  
  return   addr;  
  }  
  =================================================================  
  Top

19 楼yinqing_yx(淘汰引擎)(玩虚一族)回复于 2006-03-31 20:00:45 得分 0

整型到字符串转换的非递归法:(正数)  
  void   IntToStr(   char   *strDest,   const   int   num   )  
  {  
  int   temp   =   num;  
  int   end   =   0;  
   
  while(   (temp   /=10)   !=   0   &&   strDest++   );  
   
  temp   =   num;  
   
  do  
  {  
  end   =   temp   %   10;  
  *strDest--   =   end   +   '0';  
  temp   /=   10;  
  }while(temp   !=0   );  
   
  }  
  Top

20 楼yinqing_yx(淘汰引擎)(玩虚一族)回复于 2006-03-31 20:01:25 得分 0

//strlen再现  
  int   strlen(   const   char   *str   )   //输入参数const  
  {  
   assert(   strt   !=   NULL   );   //断言字符串地址非0  
   int   len;  
   while(   (*str++)   !=   '\0'   )    
   {    
    len++;    
   }    
   return   len;  
  }  
  //   strcpy再现  
  char   *   strcpy(   char   *strDest,   const   char   *strSrc   )    
  {  
   assert(   (strDest   !=   NULL)   &&   (strSrc   !=   NULL)   );  
   char   *address   =   strDest;    
   while(   (*strDest++   =   *   strSrc++)   !=   ‘\0’||   *strDest   !=   ‘\0’   );    
    return   address;  
  }  
  Top

21 楼slek(我浮躁,可是我很厚道!)回复于 2006-03-31 20:46:43 得分 2

class   fatherclass  
  {  
          void   print(){cout<<"father"<<endl;}  
  }  
  class   sunclass:public   fatherclass  
  {  
            void   print(){cout<<"sub"<<endl;}  
  }  
   
  fatherclass   T   =   new   subclass();  
  T.print();  
  Top

22 楼fengzhiyi1(zhaoqingguo)回复于 2006-03-31 21:05:29 得分 2

3.   以下两条输出语句分别输出什么?[C++难]  
  float   a   =   1.0f;  
  cout   <<   (int)a   <<   endl;  
  cout   <<   (int&)a   <<   endl;  
  cout   <<   boolalpha   <<   (   (int)a   ==   (int&)a   )   <<   endl;   //   输出什么?  
  float   b   =   0.0f;  
  cout   <<   (int)b   <<   endl;  
  cout   <<   (int&)b   <<   endl;  
  cout   <<   boolalpha   <<   (   (int)b   ==   (int&)b   )   <<   endl;   //   输出什么?  
   
  -------------------------------------------------------  
  谁能解释一下这个问题?谢谢Top

23 楼yinqing_yx(淘汰引擎)(玩虚一族)回复于 2006-04-01 10:27:35 得分 0

这个问题我也不清楚     等高人来学习~~~~~~~~Top

24 楼xiang1358(向圣海)回复于 2006-04-01 15:29:00 得分 3

3.   以下两条输出语句分别输出什么?[C++难]  
  float   a   =   1.0f;  
  cout   <<   (int)a   <<   endl;  
  cout   <<   (int&)a   <<   endl;  
  cout   <<   boolalpha   <<   (   (int)a   ==   (int&)a   )   <<   endl;   //   输出什么?  
  float   b   =   0.0f;  
  cout   <<   (int)b   <<   endl;  
  cout   <<   (int&)b   <<   endl;  
  cout   <<   boolalpha   <<   (   (int)b   ==   (int&)b   )   <<   endl;   //   输出什么?  
   
  -------------------------------------------------------  
  谁能解释一下这个问题?谢谢  
  -------------------------------------------------------  
   
  输出结果为:  
  1                                 //这个不用解释吧  
  2342398473298       (乱七八糟的东西)   //cout   <<   (int&)a     这句话是把a   转换成一个int型的    
                                                                        //引用作为参数传入,在Operator   <<   (..)函数中所用  
                                                                        //到的是一个int型的引用,该引用对应的内存块是  
                                                                        //float   型变量   a   对应的内存。所以它会把变量a对应  
                                                                        //的内存块当成int读出,所以输出一个无意义的数据。  
  false                                 //显然不相等,所以false                            
  0    
  0                                         //虽然是把float当成int读出,但是还是0  
  true                                   //所以是true  
  Top

25 楼socol(这个问题很难)回复于 2006-04-01 17:11:15 得分 3

输入一个字符串,将其逆序后输出。  
  void   Swap(char   &lhs,   char   &rhs)  
  {  
  char   temp   =   lhs;  
  lhs   =   rhs;  
  rhs   =   temp;  
  }  
  char   *reserveStr(char   *strSrc)  
  {  
  char   *addr   =   strSrc;  
  int   left   =   0;  
  int   right   =   strlen(strSrc);  
  while(   left<right&&left   !=   right   )//while(   left   !=   right   )  
  {  
  Swap(strSrc[left++],strSrc[--right]);  
  }  
  return   addr;  
  }  
  Top

26 楼caitian6()回复于 2006-04-01 17:18:59 得分 0

markTop

27 楼longge520(longge520)回复于 2006-04-02 21:35:52 得分 0

markTop

28 楼crescentg(我找不到改昵称的地方了,谁教教我呀)回复于 2006-04-03 09:43:00 得分 0

jiang_xiao(原来秋天)   的题不错Top

29 楼yinqing_yx(淘汰引擎)(玩虚一族)回复于 2006-04-03 09:49:00 得分 0

顶起来有题的贴哦~Top

30 楼laomai(老迈)回复于 2006-04-03 17:41:24 得分 0

根据c/c++其他技术问题的版规http://community.csdn.net/Expert/topic/4651/4651859.xml?temp=.6940729,  
  本贴被移动到c/c++新手乐园版面Top

相关问题

  • 一道面试题,与大家一起分享。
  • 今天同学去honeywell面试 Unix面试题 分享一下 大家做做看。
  • 分享几道面试题目,另求高手指教该如何作答(C#)
  • 面试问题?
  • IBM面试题!
  • 面试题目……
  • 面试题
  • 面试问题?
  • 面试题??
  • 面试题

关键词

  • c++
  • 函数
  • 节点
  • 题
  • cls
  • strsrc
  • const
  • char

得分解答快速导航

  • 帖主:yinqing_yx
  • jiang_xiao
  • slek
  • fengzhiyi1
  • xiang1358
  • socol

相关链接

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

广告也精彩

反馈

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