CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  新手乐园

请教几道C和C++的题目!(是C和C++牛人的进来回答问题!)

楼主minanqiang(我是天上的飞鸟)2005-04-22 11:34:47 在 C/C++ / 新手乐园 提问

很多道题目不知道为什么,期盼牛人解答!  
  以下三条输出语句分别输出什么?[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;   //   输出什么?  
   
  2.   非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&   );   //   赋值操作,虽不是正宗的隐式类型转换,但也可以勉强算一个  
   
  3.   以下代码中的两个sizeof用法有问题吗?[C易]  
  void   UpperCase(   char   str[]   )   //   将   str   中的小写字母转换成大写字母  
  {  
          for(   size_t   i=0;   i&ltsizeof(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;  
   
  4.   以下代码有什么问题?[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&ltstrlen(str);   ++i   )  
          char2Hex(   str[i]   );  
  cout   <<   endl;  
   
  5.   以下代码有什么问题?[C++易]  
  struct   Test  
  {  
          Test(   int   )   {}  
          Test()   {}  
          void   fun()   {}  
  };  
  void   main(   void   )  
  {  
          Test   a(1);  
          a.fun();  
          Test   b();  
          b.fun();  
  }  
   
  6.   以下代码有什么问题?[C++易]  
  cout   <<   (true?1:"1")   <<   endl;  
   
  7.   以下代码能够编译通过吗,为什么?[C++易]  
  unsigned   int   const   size1   =   2;  
  char   str1[   size1   ];  
  unsigned   int   temp   =   0;  
  cin   >>   temp;  
  unsigned   int   const   size2   =   temp;  
  char   str2[   size2   ];  
   
  8.   以下代码中的输出语句输出0吗,为什么?[C++易]  
  struct   CLS  
  {  
          int   m_i;  
          CLS(   int   i   )   :   m_i(i)   {}  
          CLS()  
          {  
                  CLS(0);  
          }  
  };  
  CLS   obj;  
  cout   <<   obj.m_i   <<   endl;  
   
  9.   C++中的空类,默认产生哪些类成员函数?[C++易]  
  答:  
  class   Empty  
  {  
  public:  
          Empty();                                                     //   缺省构造函数  
          Empty(   const   Empty&   );                         //   拷贝构造函数  
          ~Empty();                                                   //   析构函数  
          Empty&   operator=(   const   Empty&   );   //   赋值运算符  
          Empty*   operator&();                               //   取址运算符  
          const   Empty*   operator&()   const;       //   取址运算符   const  
  };  
   
  10.   以下两条输出语句分别输出什么?[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;   //   输出什么?  
   
  11.   以下反向遍历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;  
  }  
   
  12.   以下代码有什么问题?[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   );  
  }  
   
  13.   写一个函数,完成内存之间的拷贝。[考虑问题是否全面]  
  答:  
  void*   mymemcpy(   void   *dest,   const   void   *src,   size_t   count   )  
  {  
          char*   pdest   =   static_cast&ltchar*>(   dest   );  
          const   char*   psrc   =   static_cast&ltconst   char*>(   src   );  
          if(   pdest>psrc   &&   pdest&ltpsrc+cout   )   能考虑到这种情况就行了  
          {  
                  for(   size_t   i=count-1;   i!=-1;   --i   )  
                                  pdest[i]   =   psrc[i];  
          }  
          else  
          {  
                  for(   size_t   i=0;   i&ltcount;   ++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;  
  }  
  问题点数:0、回复次数:119Top

1 楼lao_du(阿东 aDong)回复于 2005-04-22 12:27:50 得分 0

我试试第一题:    
  //这些题都有很大的学问,全回答需要很大的篇章,有不对的地方,请各位高手指出,我一定虚心学习.  
   
  字符串有3种:char数组,字符串常量,   char指针.  
  char数组名是字符串首字母的地址;字符串常量的行为与数组名相同;char指针指向字符串常量的地址.  
   
  char   str1[]               =   "abc";     //声明一个char数组,编译器分配一块内存给它,大小根据后面给出的字符串自动分配;   str1为   char数组   表示字符串首字母地址,即字符串地址;   sizeof   返回数组大小.  
  char   str2[]               =   "abc";       //同上  
  const   char   str3[]   =   "abc";       //同上,只是str3被声明为只读,不能被修改.  
  const   char   str4[]   =   "abc";       //同上  
  const   char*   str5     =   "abc";       //声明一char指针,指向字符串常量;且char指针只读,不能被修改;   str5为一指向   存放字符串常量"abc"地址的   指针;   sizeof   返回   指针大小   4B.  
  const   char*   str6     =   "abc";     //同上  
   
  cout   <<   boolalpha   <<   (   str1==str2   )   <<   endl;   //   输出false     因为采用声明,分配2块不同的内存,所以地址不同  
  cout   <<   boolalpha   <<   (   str3==str4   )   <<   endl;   //   输出false     同上  
  cout   <<   boolalpha   <<   (   str5==str6   )   <<   endl;   //   输出true       地址可能相同,但C++不能保证字符串常量被唯一地址存储(可能有几个副本)  
  Top

2 楼zengwujun(月之海 为linux入门奋斗100天)回复于 2005-04-22 12:31:46 得分 0

markTop

3 楼ljan(冰魂)回复于 2005-04-22 12:48:47 得分 0

好多问题,看看Top

4 楼minanqiang(我是天上的飞鸟)回复于 2005-04-22 12:50:46 得分 0

其中有几道题目我知道答案,下周一公布!到时散分!Top

5 楼Cuiql(向前冲,向后看)回复于 2005-04-22 12:59:41 得分 0

第二题:   我见过a,c的转化.没有用过,b,d  
  第三题:有问题.  
  第五题:有问题Top

6 楼vcleaner(我没当大哥很久了.......)回复于 2005-04-22 13:02:18 得分 0

Mark,学习!Top

7 楼lao_du(阿东 aDong)回复于 2005-04-22 13:03:09 得分 0

3.   以下代码中的两个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'   );  
   
    ////----在函数内   sizeof(str)   返回指针的大小,在此一直为4,   非本意的   字符串数组大小.  
  }  
   
  cout   <<   "str字符长度为:   "   <<   sizeof(str)/sizeof(str[0])   <<   endl;  
  ////----在函数外:   sizeof(str)   返回字符串数组的大小,    
  UpperCase(   str   );  
  附:   函数传递字符串,不是传递拷贝副本(其它类型都是传递副本,除指针外),即:传递的是字符串内存地址,所以可以根据传进的地址修改原字符串;   如不想对传进的字符串做修改操作,该用   const   修饰.  
  //下午还有事,晚上回来看继续关注!Top

8 楼lorylxw()回复于 2005-04-22 13:17:19 得分 0

9.我试了默认只能产生默认构造函数和析构函数的,这个应该可以肯定的吧,既然是空类,那应该什么也不做,取地址运算,拷贝复制构造和赋值运算这些用不上吧Top

9 楼jordan1(班君)回复于 2005-04-22 13:27:26 得分 0

标记Top

10 楼lorylxw()回复于 2005-04-22 13:29:42 得分 0

8.这道题目不能输出0,在C++不允许在构造函数中调用其他构造函数,JAVA中可以在构造函数中能直接调用其他构造函数。解释不是很全面,不过应该是这个意思了吧。不对请指出Top

11 楼yyying(英洁)回复于 2005-04-22 14:24:46 得分 0

以下两条输出语句分别输出什么?  
  请各位高手多多指点!!!  
   
  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  
  1065353216  
  false  
  0  
  0  
  true  
  Top

12 楼akirya(坏[其实偶不是什么所谓的坏人])回复于 2005-04-22 15:14:10 得分 0

想想不行    
  最好拿编译器去编译一下才行Top

13 楼useresu(俗人)(灌水是我无言的抗议)回复于 2005-04-22 15:39:52 得分 0

up下,分点分Top

14 楼didoo(小狗的欲望)回复于 2005-04-22 17:46:57 得分 0

传说中,up可以分分,真的吗?Top

15 楼playmud((猪头流氓)(抵制日货)(热烈庆祝火箭输球))回复于 2005-04-22 18:03:21 得分 0

我的分都是up来得Top

16 楼rockhard(不签名)回复于 2005-04-22 18:26:07 得分 0

 
   
  4.“中国”两字为汉字,共四个字节,每个字节大于0x80。所以当char   处理时为负数。计算会不正确。Top

17 楼ect2(利爪)回复于 2005-04-22 18:33:46 得分 0

问题看着简单,想着很难,顶一下再说Top

18 楼aerfa(aerfa)回复于 2005-04-22 19:06:50 得分 0

markTop

19 楼xfxf521(天使也一样)回复于 2005-04-22 19:48:39 得分 0

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  
  1065353216  
  false  
  0  
  0  
  true  
  倒数第二答案为什么是0,有点想不通。  
  Top

20 楼zdy_8212(zdy_8212)回复于 2005-04-22 20:41:45 得分 0

1.判断相等与否,他们比较的都是地址.因此F.T.T  
  2.dynamic_cast?答案-  
  3.sizeof()  
  没时间看了..有空说..呵.Top

21 楼diandian82(点点(nothing))回复于 2005-04-22 20:48:06 得分 0

cout<<(unsigned   int)str5<<endl;  
  cout<<(unsigned   int)str6<<endl;  
  显示的地址真的一样,这是为什么呀?谁能解释一下!Top

22 楼greenteanet(扎扎实实打基础,保持一颗平常心。)回复于 2005-04-22 21:38:48 得分 0

upTop

23 楼guyaguya(我只愿面朝大海,春暖花开)回复于 2005-04-22 21:57:57 得分 0

1.指针指向的是同一块内存区  
  即&str5和str6不同,但是str5   和str6相同,都是"abc"的首地址。  
  3.做为参数传递的是char*,所以sizeof(char[])   为sizeof(char*)==4(32位)。  
  4.汉字为双字节吧,用wchar_t,当然算法也得变吧。  
  5.调用无参构造函数应该为   test   b;(好像论坛有过关于这个的争论?我用的编译器(vc6)好像是这样调用的)  
  6.cout   <<   (true?1:"1")   <<   endl;  
      ?后应该是基本类型吧?  
  7.   对const和   char[]初始化时必须用常量(const修饰的是不是也算常量)  
  8.不太清楚。设个断点没进去。  
  10.不知道。  
  11.vector::size_type   为size_t即为unsigned   int型,i为零   --i后为2的32次方   -1    
  12.erase只删除了第一个为3的值  
  可以用  
  for(   IntArray::iterator   itor=array.begin();   itor!=array.end();   ++itor   )  
  {  
          array.erase(   attr   );  
  }  
   
  Top

24 楼guyaguya(我只愿面朝大海,春暖花开)回复于 2005-04-22 22:00:04 得分 0

12.可以用  
   
          array.erase(remove(array.begin(),array.end(),3),array.end)  
  Top

25 楼zhangfjj(小张)回复于 2005-04-22 22:07:34 得分 0

占个座先Top

26 楼xiabao(小军)回复于 2005-04-22 22:09:42 得分 0

用VC调试一下   就出来了哦Top

27 楼titainium(一千瓦的刀狼)回复于 2005-04-22 22:23:42 得分 0

12题不对,iter会报错,因为会指向一个删除的元素。Top

28 楼flyarry()回复于 2005-04-22 22:43:34 得分 0

记下Top

29 楼t_jl1979(骑士)回复于 2005-04-22 22:44:18 得分 0

这些题都是有来头的题.   这是exceptional   c++上面的题,专门有一节讲这个.不简单的.  
  以下代码有什么问题?[C++易]  
  struct   Test  
  {  
          Test(   int   )   {}  
          Test()   {}  
          void   fun()   {}  
  };  
  void   main(   void   )  
  {  
          Test   a(1);  
          a.fun();  
          Test   b();  
          b.fun();  
  }  
  Top

30 楼MagicCarmack(MagiC++)回复于 2005-04-23 10:52:14 得分 0

相同的字符串的首地址是否相同,与编译器实现有关的Top

31 楼mostideal(三甲)回复于 2005-04-23 11:07:35 得分 0

这些题都是有来头的题.   这是exceptional   c++上面的题,专门有一节讲这个.不简单的.  
  以下代码有什么问题?[C++易]  
  struct   Test  
  {  
          Test(   int   )   {}  
          Test()   {}  
          void   fun()   {}  
  };  
  void   main(   void   )  
  {  
          Test   a(1);  
          a.fun();  
          Test   b();  
          b.fun();  
  }  
  ————————————————————————————————————  
   
  结构能这样做吗???Top

32 楼HovahYuan(格瓦拉)回复于 2005-04-23 11:30:14 得分 0

markTop

33 楼qnjian(南一郎 )回复于 2005-04-23 12:05:38 得分 0

up  
  Top

34 楼mba9001(两年不见,csdn变肥了)回复于 2005-04-23 13:09:53 得分 0

markTop

35 楼aceouter(outer)回复于 2005-04-23 13:20:08 得分 0

markTop

36 楼asddfg(美和智慧一样,只喜欢孤寂的崇拜者 )回复于 2005-04-23 13:21:42 得分 0

好多题,,   Mark,学习!Top

37 楼oyljerry(【勇敢的心】→ ㊣提拉米苏√㊣)回复于 2005-04-23 13:33:34 得分 0

结构中一般不定义成员函数吧,类才可以这样Top

38 楼yuanyou(元友)回复于 2005-04-23 14:18:29 得分 0

heheTop

39 楼yythinking()回复于 2005-04-23 14:38:21 得分 0

cout   <<   (true?1:"1")   <<   endl;  
  好像:前后要求类型相同吧  
  cout   <<   (true?"1":"1")   <<   endl;和cout   <<   (true?1:1)   <<   endl;都可以  
  Top

40 楼yab1109(*星空下的吻*)回复于 2005-04-23 15:17:46 得分 0

HOHO很难饿,还没学起来Top

41 楼xxgu(上柳梢)回复于 2005-04-23 16:07:31 得分 0

标一下来Top

42 楼guyaguya(我只愿面朝大海,春暖花开)回复于 2005-04-23 18:09:50 得分 0

结构中一般不定义成员函数吧,类才可以这样  
   
  c++中struct是和类差不多的  
  除了c++默认为private,而struct为public的Top

43 楼rabi_(`!懒虫!`)回复于 2005-04-23 18:15:50 得分 0

好多,学习一下Top

44 楼shiwen2005(南昌的)回复于 2005-04-23 22:32:02 得分 0

太多了噢Top

45 楼jordan1(班君)回复于 2005-04-24 10:41:43 得分 0

i&ltstrlen(str);    
  上面的语句是什么意思啊,请达人告知。谢谢!Top

46 楼minanqiang(我是天上的飞鸟)回复于 2005-04-25 09:31:53 得分 0

UPTop

47 楼andycpp(幻瞳)回复于 2005-04-25 09:55:52 得分 0

markTop

48 楼saince(搜猫)回复于 2005-04-25 10:40:17 得分 0

先占,回去慢慢看。Top

49 楼whyglinux(山青水秀)回复于 2005-04-25 15:56:10 得分 0

1、  
  str1、str2、str3、str4都是数组名,在数值上表示数组的起始地址。不同数组的首地址是不一样的,所以   str1==str2   以及   str3==str4   的结果都是   false。  
   
  const   char*   str5   =   "abc";  
  const   char*   str6   =   "abc";  
  这种情况比较特殊。str5、str6是字符指针,存放的是常量字符"abc"的起始地址。对于相同的常量字符串,现在的编译器一般都只存放它的一个拷贝,所以这时   str5==str6   为   true。但是并不是所有的编译器都会这样做,所以   str5==str6   的结果是实现相关的。  
   
  2、  
   
  3、  
  void   UpperCase(   char   str[]   )   中的   str   在函数内将“退化”为一个普通的字符指针   char*,所以在函数内   sizeof(str)   =   sizeof(char*),因此用它不能求出数组的大小;一般情况下函数还需要一个另外的参数来传递数组的大小,如:void   UpperCase(   char   str[],   int   size   )。  
   
  字符串的长度(strlen(str))不等于存储字符串的数组的大小(sizeof(str)/sizeof(str[0]));正常情况下,数组的元素个数应该大于字符串的长度。  
   
  4、  
  void   char2Hex(   char   c   )   函数声明应该修改为   void   char2Hex(   unsigned   char   c   )。这是因为   char   到底是   unsigned   char   还是   signed   char   在不同的系统上有不同的规定,也就是说是系统相关的。但是上述函数在进行字符转换的时候采用的算法要求字符必须是   unsigned   char   型的,否则对于大于127的字符(如中文字符)得不到正确的结果。  
   
  5、  
  Test   b();   //   这一句是一个函数声明,声明了一个函数b,返回值类型为Test,参数为空  
  b.fun();   //   b不是Test对象,所以非法  
   
  6、  
  cout   <<   (true?1:"1")   <<   endl;   //   1是int型,"1"是字符指针,即   char*。这两种类型不能进行默认转换,所以非法。?:运算符要求后两个操作数的类型必须是兼容的。  
   
  7、  
  不能通过编译。因为   char   str2[   size2   ];   中的   size2   在编译期间其值不能被确定,只有在程序运行期间才能确定。C++不支持变长数组。  
   
  8、  
  构造函数有其特殊的地方:其名称与类名是一样的。因此,与赋值运算符、析构函数以及其它成员函数不同,构造函数不能被用户直接使用。如下的使用情况将会被解释为创建了一个CLS的临时对象,并没有给数据成员m_i赋值,所以m_i没有被初始化,cout   <<   obj.m_i   <<   endl;的输出是一个不确定的值。  
  CLS()  
  {  
  CLS(0);   //   创建了一个CLS的临时对象,并没有给数据成员m_i赋值    
  }  
   
  9、  
  前四种,即缺省构造函数、拷贝构造函数、析构函数和赋值运算符。  
   
  10、  
  float   a   =   1.0f;  
  cout   <<   (int)a   <<   endl;  
  cout   <<   (int&)a   <<   endl;  
  cout   <<   boolalpha   <<   (   (int)a   ==   (int&)a   )   <<   endl;   //   输出什么?  
  输出false。因为(int)a是进行强制类型转换,这种转换是逻辑意义上的转换,即编译器进行的是数学意义上的近似等值转换,转换的结果是1。而(int&)a是将a转换为一个int引用,进行的是位转换。由于float   的   1.0   和int   的   1   在内存中的表示是不一样的,所以对同一个float对象a=1.0f进行值转换和位转换的结果是不相等的。  
   
  float   b   =   0.0f;  
  cout   <<   (int)b   <<   endl;  
  cout   <<   (int&)b   <<   endl;  
  cout   <<   boolalpha   <<   (   (int)b   ==   (int&)b   )   <<   endl;   //   输出什么?  
  这种情况下的输出却是   true。这是因为   float   的   0.0   和   int   的   0   在内存中的表示是一样的。  
   
  对于上面的问题,如果你清楚了float的IEEE的表示方法,就会更加明白为什么了。  
   
  11、  
  for(   vector::size_type   i=array.size()-1;   i>=0;   --i   )   //   反向遍历array数组  
  vector::size_type的实际类型为   unsigned   int,而unsigned   int是始终大于等于0的,不可能小于0,所以上面的循环条件   i>=0   永远是true,不能变为false,这就是问题之所在。这种情况下必须使用signed   int(即int)。  
   
  12、  
  for(   IntArray::iterator   itor=array.begin();   itor!=array.end();   ++itor   )  
  {  
  if(   2   ==   *itor   )   array.erase(   itor   );  
  }  
  这种情况下对于相邻的两个元素   2,只能消除开始的一个2,第二个   2   没有被消除(请自己分析一下为什么会出现这种情况)。改为下面的程序就可以全部消除了:  
  for(   IntArray::iterator   itor=array.begin();   itor!=array.end();   )  
  {  
  if(   2   ==   *itor   )   array.erase(   itor   );  
  else   ++itor;  
  }  
   
  13、  
  要考虑到内存有重叠的情况。Top

50 楼jordan1(班君)回复于 2005-04-25 17:16:54 得分 0

等楼主入答案,有许多还是不明白啊,也许是我太笨了吧!呵呵Top

51 楼sinro1983()回复于 2005-04-25 22:48:55 得分 0

学习中!!!Top

52 楼chchmily(chchmily)回复于 2005-04-25 23:56:35 得分 0

xue   xiTop

53 楼a112319124728(彪)回复于 2005-04-26 06:58:03 得分 0

upTop

54 楼minanqiang(我是天上的飞鸟)回复于 2005-04-27 12:48:06 得分 0

.......Top

55 楼magic_laubj2008(C++初学者)回复于 2005-04-27 16:44:58 得分 0

学习Top

56 楼holmesma(水清鱼跃)回复于 2005-04-27 17:28:54 得分 0

markTop

57 楼lonelyforest(一生所爱)回复于 2005-04-27 17:54:00 得分 0

看来牛人不少,以后还要向诸位“牛人”   好好学习啊!Top

58 楼hbyufan()回复于 2005-04-27 20:36:27 得分 0

upTop

59 楼mayeyun(mayeyun)回复于 2005-04-27 20:51:19 得分 0

向楼上的牛人致敬!Top

60 楼leconte(leconte)回复于 2005-04-27 20:55:11 得分 0

#include   <iostream>  
  第7题我直觉应该不能运行成功,不过在gcc下试验居然可以。  
  谁能解释为什么。cin改为scanf就不行  
   
  #include   <vector>  
  #include   <cstdio>  
  using   namespace   std;  
   
  int   main(   void   )  
  {  
  unsigned   int   const   size1   =   2;  
  char   str1[   size1   ];  
  unsigned   int   temp   =   0;  
  cin   >>   temp;  
  unsigned   int   const   size2   =   temp;  
  char   str2[   size2   ];  
  for   (int   i=0;i<size2-1;++i)  
  {  
  str2[i]='m';  
  }  
  str2[size2-1]='\0';  
  cout<<str2<<endl;  
  system("pause");  
  }  
  可正常输出mmm   ...Top

61 楼ducktail()回复于 2005-04-27 23:15:11 得分 0

markTop

62 楼mostideal(三甲)回复于 2005-04-28 00:48:22 得分 0

关注。。Top

63 楼whyglinux(山青水秀)回复于 2005-04-28 11:10:19 得分 0

To   leconte(leconte)  
   
  >>   第7题我直觉应该不能运行成功,不过在gcc下试验居然可以。  
  >>   谁能解释为什么。  
   
  GCC的扩展支持变长数组。在编译的时候加上   -std=c++98   -pedantic   可以把GCC的扩展功能屏蔽,并且对于程序中不符合C++标准的地方会给出出错信息。  
   
  >>   cin改为scanf就不行  
   
  在我这里一切正常(GCC   3.3.3)。不知道你是编译错误还是运行错误。如果是运行错误,要保证scanf写的是正确的。Top

64 楼leconte(leconte)回复于 2005-04-28 18:05:51 得分 0

谢谢楼上。  
  我后来反应过来了。  
  gcc是支持C99标准的。  
  scanf也可以,是我弄错了Top

65 楼yunlang2233187(冰水湖)回复于 2005-04-28 18:13:21 得分 0

markTop

66 楼zinsserren(`泽)回复于 2005-04-28 18:26:22 得分 0

大哥们好厉害啊,我只是第一次在这里发帖子,也是初学C,请多多关照。Top

67 楼wgy913(冬日菩提)回复于 2005-04-28 20:10:18 得分 0

呵呵,这位你是C和C++一起学啊,  
  这样可以吗?我学过C了,现在在学C++,那我不是比你晚了点啊,唉Top

68 楼brianlu(-)回复于 2005-05-01 11:59:16 得分 0

markTop

69 楼inlin()回复于 2005-05-01 14:07:11 得分 0

看看Top

70 楼kenyle(哎呀妈呀~这不就是传说中的B13吗~~)回复于 2005-05-01 22:45:15 得分 0

5.   以下代码有什么问题?[C++易]  
  struct   Test  
  {  
          Test(   int   )   {}  
          Test()   {}  
          void   fun()   {}  
  };  
  void   main(   void   )  
  {  
          Test   a(1);  
          a.fun();  
          Test   b();  
          b.fun();  
  }  
  1、C中这样写是有问题的,原因,struct是没有成员函数的。(引用C++)的说法  
  2、C++中这样写将会认为是一个类的特例。其属性为public,但好象不可以有构造函数,只可以有成员函数和数据成员吧。记不清了,乱说~Top

71 楼kenyle(哎呀妈呀~这不就是传说中的B13吗~~)回复于 2005-05-01 22:59:40 得分 0

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;   //   输出什么?  
  这个题目好象是要了解什么是char\const   char\const   char*  
  由于C没有stirng所以char   的数组可以实现string  
  按我学习过程中老师帮着总结的经验这样读题。  
  从右至左,这个方法是个人所有,不要当公式用。  
  对于任意的情况我们例解分析如下。  
  const   char   *   str6   =   "abc"   ;  
  “abc"字符串。  
  =赋值。  
  str6   标识符。  
  类形。  
  是一个指针   什么指针。  
  是一个char指针,  
  同时这个指针是一个const的。  
  于是我们可以知道。这个常量的字符指针指向的是一个字符串。  
  另个大家要搞清,指针常量与常量指针等之间的关系与可以被更改的是什么,不可以变的是什么。  
  指针常量不可以变的是地址,内容可以变,地址的内容可以变。  
  常量指针   内容不可以变,但是指向的地址可以变。  
  这个清华的书上讲得就很清楚了。其它的由于水平有限无法回答。学习ingTop

72 楼erxwu(溪中石)回复于 2005-05-05 12:30:16 得分 0

upTop

73 楼makedir(bear)回复于 2005-05-05 13:44:23 得分 0

学习!Top

74 楼awperpvip(挖靠我狂晕来CSDN这么久,竟不知道原来名字可以这么长)回复于 2005-05-05 14:21:00 得分 0

ding...回去调试一下.Top

75 楼qiqi162002(思想)回复于 2005-05-05 18:48:40 得分 0

没人回答第二问。  
   
  B向A的隐式转换就只有两种情况。在C++中,非内带类型的。  
   
  class   B{operator   A();}//有一个A的的操作符。  
  class   A{A(B   b)}//A中有一个构造函数以B型为常数,会隐式转换  
   
  就这两种情况了,自带类型就复杂一点了。Top

76 楼flyingdancing2005(返璞归C)回复于 2005-05-05 18:58:57 得分 0

learning.........Top

77 楼flyingdancing2005(返璞归C)回复于 2005-05-05 19:11:39 得分 0

第一题中的boolalpha是什么意思?   //我是菜鸟,请高手解释.....Top

78 楼awperpvip(挖靠我狂晕来CSDN这么久,竟不知道原来名字可以这么长)回复于 2005-05-05 19:26:19 得分 0

以下三条输出语句分别输出什么?[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;   //   输出false  
  cout   <<   boolalpha   <<   (   str3==str4   )   <<   endl;   //   输出false  
  cout   <<   boolalpha   <<   (   str5==str6   )   <<   endl;   //   输出false  
   
  Top

79 楼awperpvip(挖靠我狂晕来CSDN这么久,竟不知道原来名字可以这么长)回复于 2005-05-05 19:29:32 得分 0

加<<boolalpha   输出true   或   false  
  不加<<boolalpha   则输出1   或   0Top

80 楼flyingdancing2005(返璞归C)回复于 2005-05-06 16:36:03 得分 0

TO     awperpvip()    
  谢了Top

81 楼aaww110(阿牛哥)回复于 2005-05-06 23:51:40 得分 0

其中有几道题目我知道答案,下周一公布!到时散分!  
  Top

82 楼maxuming914a1(马克)回复于 2005-05-07 03:58:56 得分 0

learning.........  
   
  Top

83 楼brucelee0224(li文5)回复于 2005-05-08 15:05:12 得分 0

upTop

84 楼xiaojun_036198()回复于 2005-05-08 15:48:41 得分 0

markTop

85 楼guofu_x(蝈蝈)回复于 2005-05-08 16:29:35 得分 0

12题有问题,没有定义类型,而是typedef   vector<int>   IntArrayTop

86 楼km3(北落师门)回复于 2005-05-08 16:34:04 得分 0

markTop

87 楼yangliyong1982(雨浮)回复于 2005-05-08 19:48:33 得分 0

markTop

88 楼guyaguya(我只愿面朝大海,春暖花开)回复于 2005-05-10 10:14:06 得分 0

揭帖啊Top

89 楼mfg800917(下雪的冬天)回复于 2005-05-10 14:18:13 得分 0

upTop

90 楼husl(胡少磊)回复于 2005-05-11 13:09:50 得分 0

 
  cout   <<   boolalpha   <<   (   *str1==*str2   )   <<   endl;   //   输出什么?  
  cout   <<   boolalpha   <<   (   *str3==*str4   )   <<   endl;   //   输出什么?  
   
  这样输出就是ture   了  
  str1   ,   str2   代表的   是地址    
   
   
   
  Top

91 楼gaviner((sorry)i am learning......)回复于 2005-05-11 13:19:53 得分 0

mark,,learningTop

92 楼husl(胡少磊)回复于 2005-05-11 13:20:42 得分 0

const   char*   str5     =   "abc";  
   
  这表示什么意思啊   ?  
  cout   <<   str5;       //   a  
  cout   <<   *str5;     //   abc  
  cout   <<   &str5;     //   0012FF64   地址码  
   
  const   int*   a   =   1;     //   char   换成   int   显然不行  
   
   
  const   char*   str5     =   "abc";     这声明了个什么   ?  
  指针的指针??  
   
   
   
  Top

93 楼fightintokyo()回复于 2005-05-11 13:27:12 得分 0

markTop

94 楼hackingtruth(尘封)回复于 2005-05-11 13:45:10 得分 0

UpTop

95 楼JonathanLee(唐宋)回复于 2005-05-11 14:00:15 得分 0

markTop

96 楼nicknide(封月翔天)回复于 2005-05-11 14:21:41 得分 0

 
  6.   以下代码有什么问题?[C++易]  
  cout   <<   (true?1:"1")   <<   endl;  
   
  老的C++中是不可以通过?:返回不同类型,但是在新的标准中,允许这样的返回,所以说起来,这个地方没有问题Top

97 楼nicknide(封月翔天)回复于 2005-05-11 14:30:19 得分 0

5.   以下代码有什么问题?[C++易]  
  struct   Test  
  {  
          Test(   int   )   {}  
          Test()   {}  
          void   fun()   {}  
  };  
  void   main(   void   )  
  {  
          Test   a(1);  
          a.fun();  
          Test   b();  
          b.fun();  
  }  
   
  错误很明显,main函数返回值不能为void  
  标注中明确过这一点,但是有很多从vc   6中过来的人还不明白这个,换到其他环境,比如   VC   7,编译不通过.Top

98 楼Passants(路过)回复于 2005-05-11 20:34:44 得分 0

10.   以下两条输出语句分别输出什么?[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.0  
  1065353216  
  false  
  0  
  0  
  true  
   
  解释:  
  cout   <<   (int)a   <<   endl;   强制类型转换成1  
  cout   <<   (int&)a   <<   endl;   将a转换成整型引用,1.0的浮点表示是0   11111110   00000000000000000000000,变成int就是1065353216  
  cout   <<   boolalpha   <<   (   (int)a   ==   (int&)a   )   <<   endl;   当然是false  
   
  以下可以类推Top

99 楼abcabc999()回复于 2005-05-11 21:59:23 得分 0

upTop

100 楼threadpaper(便桶超人)回复于 2005-05-11 23:46:36 得分 0

const   char*   str5     =   "abc";     这声明了个什么   ?  
  指针的指针??  
   
  str5指向的内存空间的数据是只读(不可变的),但是str5可以指向新的内存地址。  
  如果不加const   碰到类似   *(str5   +   1)   =   'c'   这样的语句,编译连接不会报错,运行就不对了  
  Top

101 楼erxwu(溪中石)回复于 2005-05-24 19:56:02 得分 0

upTop

102 楼pure_flame()回复于 2005-05-24 20:41:09 得分 0

第四题的Test   b();这样创建对象b有问题,应该把()去掉,否则编译器会将它是为一个返回为Test类型的函数了.Top

103 楼wayne92(毓轩(魔鬼训练中))回复于 2005-05-24 22:53:15 得分 0

mark  
  学习Top

104 楼WateryHeart1984()回复于 2005-05-24 23:48:08 得分 0

up   lao_du(阿东   Aonon【dd】)Top

105 楼WateryHeart1984()回复于 2005-05-24 23:50:23 得分 0

up   whyglinux(山青水秀)Top

106 楼duke1996(笑傲人生)回复于 2005-05-25 10:40:44 得分 0

markTop

107 楼guyaguya(我只愿面朝大海,春暖花开)回复于 2005-05-25 17:20:53 得分 0

揭帖啊Top

108 楼whatsouta(某疯子)回复于 2005-05-25 17:54:23 得分 0

好东西南北啊  
  下载Top

109 楼whatsouta(某疯子)回复于 2005-05-25 18:09:04 得分 0

const   char*   str5     =   "abc";       //声明一char指针,指向字符串常量;且char指针只读,不能被修改;   str5为一指向   存放字符串常量"abc"地址的   指针;   sizeof   返回   指针大小   4B.  
   
  我觉得是指针指向的内容只读,指针可写.  
  const   char   *str5   =   "abc"  
  相当于  
  const   char   str[]   =   "abc";  
  cahr   *str5   =   char;  
   
  即   *str5   =   "def";   是不允许的,   str5   =   "def";   是许的.Top

110 楼umbrella1984(雨伞(KEN))回复于 2005-05-26 01:23:42 得分 0

学习。Top

111 楼magicsnake(北极狐)回复于 2005-05-26 10:06:08 得分 0

嗯,有空再看看Top

112 楼csoapy(就是不结贴)回复于 2005-05-26 14:41:38 得分 0

whyglinux(山青水秀)   说得对,  
  把 const   char*   str6     =   "abc";的"abc"改成"abcd",结果就是false了?Top

113 楼sankt(宠辱不惊,看庭前花开花落;去留无意,望天空云卷云舒.)回复于 2005-05-26 15:54:25 得分 0

upTop

114 楼sonhehlee()回复于 2005-05-27 11:30:51 得分 0

学习ing......Top

115 楼the777(第九天魔王)回复于 2005-05-28 21:37:22 得分 0

这是不是你的作业呀???Top

116 楼lingjingqiu(空明流转)回复于 2005-05-28 22:05:56 得分 0

犯不着高手,题目又不难。编译一下不就知道了Top

117 楼zsh6709(世界上没有后悔药吃的!!!)回复于 2005-05-28 22:36:58 得分 0

boolalpha,这个东东,没见过,难道是判断真假用的??Top

118 楼angelight(流氓ごХiǎО子)回复于 2005-05-28 23:03:45 得分 0

都不看不懂哦      
   
  我刚学C       别打击我的信心哦Top

119 楼andy_bin(乐逍遥)回复于 2005-05-29 01:09:30 得分 0

 
  向楼上的牛人致敬!  
   
  学习ing....!  
  Top

相关问题

  • C的题目
  • C题目,求解!
  • 一个C题目
  • 收购C++题目.
  • 谁有C++考试题目?
  • C语言小题目
  • 求解C++算法题目
  • 求解C++算法题目
  • 面试题目 VC(c++)
  • 求各种 C/C++ 面试题目

关键词

  • c++
  • 函数
  • gcc
  • abc
  • pdest
  • psrc
  • 输出
  • cls
  • scanf
  • str

得分解答快速导航

  • 帖主:minanqiang

相关链接

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

广告也精彩

反馈

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