首页 > 编程资源分享区 > C/C++测试题 > 新C++ 练习题(1)
2006
10-22

新C++ 练习题(1)

一、选择填空


    1.在下列关键字中,用以说明类中公有成员的是( )


Apublic  Bprivate  Cprotected         Dfriend


    2.下列的各类函数中,( )不是类的成员函数。


A. 构造函数;  B.析构函数;


C.友元函数;D.拷贝初始化构造函数


  3.作用域运算符的功能是( )


    A.标识作用域的级别的;


    B.指出作用域的范围的;


    C.给定作用域的大小的;


    D.标识某个成员是属于哪个类的。



   4( )是不可以作为该类的成员的。


    A.自身类对象的指针;


    B.自身类的对象;


    C.自身类对象的引用;


    D.另一个类的对象。


   5( )不是构造函数的特征。


    A.构造函数的函数名与类名相同;


    B.构造函数可以重载;


    C.构造函数可以设置缺省参数;


    D.构造函数必须指定类型说明。


   6( )是析构函数的特征。


    A.一个类中只能定义一个析构函数;


    B.析构函数名与类名不同;


    c.析构函数的定义只能在类体内;


    D.析构函数可以有一个或多个参数。


   7.通常的拷贝初始化构造函数的参数是( )


    A.某个对象名;


    B.某个对象的成员名;   


    C.某个对象的引用名;


    D.某个对象的指针名。   


  8.关于成员函数特征的下述描述中,( )是错误的。


    A.成员函数一定是内联函数;


    B.成员函数可以重载;


    C.成员函数可以设置参数的缺省值;


    D.成员函数可以是静态的。


  9.下述静态数据成员的特性中,( )是错误的。


  A.说明静态数据成员时前边要加修饰符static


  B. 静态数据成员要在类体外进行初始化


  C.引用静态数据成员时,要在静态数据成员前加<类名>和作用域运算符


  D.静态数据成员不是所有对象所共用的。


  10.友元的作用( )


    A.提高程序的运用效率;


    B.加强类的封装性;


    C.实现数据的隐藏性;


    D.增加成员函数的种类。


二、判断下列描述的正确性,对者划√,错者划×。


  1.使用关键字class定义的类中缺省的访问权限是私有(private)的。


  2.作用域运算符(::)只能用来限定成员函数所属的类。


  3.析构函数是一种函数体为空的成员函数。


  4.构造函数和析构函数都不能重载。


  5.说明或定义对象时,类名前面不需要加class关键字。


  6. 对象成员的表示与结构变量成员表示相同,使用运算符.或者->


  7.所谓私有成员是指只有类中所提供的成员函数才能直接使用它们,任何类以外的函数对它们的访问都是非法的。


  8.某类中的友元类的所有成员函数可以存取或修改该类中的私有成员。


  9. 可以在类的构造函数中对静态数据成员进行初始化


  10.如果一个成员函数只存取一个类的静态数据成员,则可将该成员函数说明为静态成员函数。


 



三、分析下列程序的输出结果


1.构造函数


#include <iostream.h>


 


class A


{


  public:


    A();


    A(int i,int j);


    void print();


  private:


    int a,b;


};


 


A::A()


{


    a=b=0;


    cout<<”Default constructor called.\n”;


}


 


A::A(int i,int j)


{


    a=i;


    b=j;


    cout<<”Constructor called.\n”;


}


 


void A::print()


{


  cout<<”a=”<<a<<”,b=”<<b<<endl;


}


 


void main()


{


    A m,n(4,8);


    m.print();


    n.print();


}


2. 类中有其它类的对象


#include<iostream.h>


 


class B


{


  public:


    B(){}


    B(int i,int j);


    void printb();


  private:


    int a,b;


};


 


class A


{


  public:


    A(){}


    A(int i,int j);


    void printa();


  private:


    B c;


};


 


A::A(int i,int j):c(i,j)


{}


 


void A::printa()


{    c.printb(); }


 


B::B(int i,int j)


{    a=i;     b=j; }


 


void B::printb()


{ cout<<”a=”<<a<<”,b=”<<b<<endl; }


 


void main()


{


    A m(7,9);


    m.printa();


}


3. 静态成员变量和静态成员函数


#include<iostream.h>


class Count


{


public:


       Count(){ count++; }


       static int HM(){return count;}


       ~Count()


       {


              count–;


              cout<<”count=”<<HM()<<endl;


       }


private:


       static int count;


};


 


int Count::count=100;


 


void main()


{


    Count c1,c2,c3,c4;


    cout<<”Count::HM : “<<Count::HM()<<endl;


       cout<<”c1.hm : “<<c1.HM()<<endl;


}


4. 引用


#include<iostream.h>


class A


{


public:


    A(double t,double r){ Total=t; Rate=r;}


    friend double Count(A &a)


    {


              a.Total += a.Rate*a.Total;


              return a.Total;


    }


private:


    double Total,Rate;


};


 


void main()


{


       A a1(100.0,0.35),a2(200.0,0.02);


       cout<<Count(a1)<<”,”<<Count(a2)<<endl;


}


 


 


 


 


 


 


 


 


5. 引用和拷贝构造函数


#include<iostream.h>


class Set


{


public:


    Set(){ PC=0; }


    Set(Set &s);


    void Empty(){ PC=0; }


    int IsEmpty(){ return PC==0; }


    int IsMemberOf(int n);


    int Add(int n);


    void Print();


    friend void reverse(Set *m);


private:


    int elems[100];


    int PC;


};


 


int Set::IsMemberOf(int n)


{


  for(int i=0;i<PC;i++)


    if(elems[i]==n)


              return 1;


  return 0;


}


 


int Set::Add(int n)


{


  if(IsMemberOf(n))


    return 1;


  else if(PC>=100)


    return 0;


  else


  {


    elems[PC++]=n;


    return 1;


  }


}


 


 


 


 


 


 


Set::Set(Set &p)


{


  PC=p.PC;


  for(int i=0;i<PC;i++)


    elems[i]=p.elems[i];


}


 


void Set::Print()


{


  cout<<”{“;


  for(int i=0;i<PC-1;i++)


    cout<<elems[i]<<”,”;


  if(PC>0)


    cout<<elems[PC-1];


  cout<<”}”<<endl;


}


 


void reverse(Set *m)


{


  int n=m->PC/2;


  for(int i=0;i<n;i++)


  {


    int temp;


    temp = m->elems[i];


    m->elems[i] = m->elems[m->PC-i-1];


    m->elems[m->PC-i-1]=temp;


  }


}


 


 


void main()


{


  Set A;


  if(A.IsEmpty())


         cout<<”空序列“<<endl;


  else


         cout<<”非空序列“<<endl;


  A.Print();


 


  Set B;


  for(int i=1;i<=8;i++)


              B.Add(i);


  B.Print();


  if(B.IsMemberOf(5))


       cout<<” 5 在此序列中“<<endl;


  else


       cout<<” 5 不在此序列中“<<endl;


 


  B.Empty();


  for(int j=11;j<20;j++)


    B.Add(j);


  Set C(B);


  C.Print();


  reverse( &C);


  C.Print();


}


 


四、按下列要求编写程序。


  在一个程序中,实现如下要求:


  (1)构造函数重载;


  (2)成员函数设置缺省参数;


  (3)有一个友元函数;


  (4)有一个静态函数;


  (5)使用不同的构造函数创建不同对象。


新C++ 练习题(1)》有 8 条评论

  1. 1234!!! 说:

    有答案吗?

  2. 1234!!! 说:

    急需要答案。谢谢

  3. zwind_fancy 说:

    不错 基础很重要 呵呵

  4. woaibanelo 说:

    希望有人能帮我做下我的C语言考试题目~我真的不会做,我QQ372105005  希望做好的发给我QQ邮箱  372105005@qq.com

    1.下述标识符中,(   )是合法的用户标识符。
        A.A#C        B.getch        C.void        D.ab*
    2.
    C语言中,字符型数据在内存中是以(  )形式存放的。
        A.
    原码        B.BCD        C.反码        D.ASCII
    3.c
    源程序经过编译后生成的文件后缀名是:(    )。
        A.obj       B.exe        C.c        D.prj
    4.
    有符号整数的有效范围是(    )。
        A.65536123        B.
    3276832767        C.4175462436       D.不确定的
    5.
    等号与赋值号的优先级是(     )。
        A.
    等号高        B.赋值号高        C.一样高        D.不能比

    6.以下哪一个可以代表一维数组a[10]的头地址。(     )
    1
    A.a[0]        B.a        C.a[10]        D.&a[]  
    7.
       )是构成C语言的基本单位。

        A.
    函数        B.过程        C.子程序        D.子例程
    8.
    若有说明:char s1=’\067′;char s2=”1″;char s3=’1′;s1(1),s2(2),s3(3)
    1.A.包含3个字符            B.包含2个字符           (     )
       
     C.包含1个字符            D.无定值,说明不合法

    2.A.包含1个字符            B.包含2个字符           (     )
       
     C.包含3个字符            D.无定值,说明不合法

    3.A.包含1个字符            B.包含2个字符           (     )
       
     C.包含3个字符          D.无定值,说明不合法

    9.
    xint型变量,则执行以下语句后,x的值为(      )
        x=6;    x+=x-=x*x

        A.36        B.-60        C.60        D.-24
    10.
    若有说明:int a[3][4];则对a数组元素的正确引用是(     )

      A.  a[2][4]   B.  a[13]   C.  a[1+1][0]    D. a(2)(1)

    11.若有以下类型说明语句:     char w; int x; float y; double z;
       
    则表达式 w*x+z-y 的结果是(       )类型。

        A.float        B.char        C.int        D.double
    12
    .已知共用体类型:union data {int I;char ch;float f };请问以这种类型命名的变量内存长度是()

    A1 B< ?:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />4 C5 D7

    13.把字符数组a赋给字符数组b的方法是:(  )

    A. b=a Bstrcat(b,a) C*b=*a Dstrcpy(b,a)

    14.有字符数组a[80]b[80],则正确的输出语句是(      )

    A. puts(a,b)  B .printf(“%s,%s”,a[ ],b[ ]);  C. putchar(a,b)  D. puts(a), puts(b)

    15.一个C语言的程序是由(      )
        A.
    一个主程序和若干个子程序组成            B.函数组成

        C.
    若干过程组成                            D.若干子程序组成
    16.
    以下述叙不正确的是(       )
        A.
    一个C源程序可以由一个或多个函数组成    B.一个C源程序必须包含一个main函数

        C.  C
    程序的基本组成单位是函数    D.  C程序中注释说明只能位于一条语句的后面
    17.C
    语言中规定:在一个源程序中main函数的位置(      )
        A.
    必须在最开始                B.必须在系统调用的库函数的后面

        C.
    可以任意                    D.必须在最后
    18.
    一个C程序的执行是从(       )
        A.
    本程序的main函数开始,到main函数结束

        B.
    本程序文件的第一个函数开始,到本程序的最后一个函数结束
        C.
    本程序的main函数开始,到本程序的最后一个函数结束
        D.
    本程序文件的第一个函数开始,到本程序main函数结束
    19.
    以下述叙正确的是(        )
        A .
    C程序中,main函数必须位于程序的最前面

        B.   C
    程序的每行中只能写一条语句
        C.   C
    语言本身没有输入输出语句
        D.
    在对一个C程序进行编译的过程中,可发现注释中的拼写错误
    20.
    设有语句:int alb2*p1&a*p2&b;,以下可使指针p1指向变量b的赋

        值语句是(      )

    A)P1*P2    B)*P1P2    C)P1p2    D)*P1*P2

    21. 以下与int  *p[3];等价的定义语句是(      )

    A)int  *p;    B)int  *(p[3])    C)int  p[3];    D)int  (*p)[3];

    22在以下选项中,操作不合法的一组是:(      )

      A)int  x[6]*p;  p=&x[0];    B)int  x[6] *P  *px;

      C)int  x[6]*P;   px;      D)int x[5]P  px[o]

    23.设有如下定义,若字荷型变量占1字节、整型变量占2字节、双精度变量占8字节

        则结构变量s占用内存的字节数是:  (     )

        A)11    B)13    C)15   D)17

    24文件是一种什么样的数据类型(  
    A
    )结构体      B)共用体      C)数组      D)一种特殊的类型

    25用来保存图书馆所有藏书,最好的数据类型应该是(  

    A)结构体   B)指针 C)数组    D)指针数组

    2其他三种类型的题目可参考的内容有:

    < ?:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> 

    (1)       条件语句的分类描述

    (2)       循环语句的分类描述

    (3)       有序整形数组a[]中插入一个数num,使得插入后的数组仍然有序

    (4)       程序判定2008 — 2080年中的每一年是否闰年

    (5)       输入华氏温度,求摄氏温度,公式为:c=5/9(F-32)。输出结果取2位小数

    (6)       比较两个字符的大小,按由小到大输出

    (7)       输入两个数,求两个数之和。

    (8)       1!+2!+3!+4!+5!+6!+…+10

    (9)       打印一个菱形的图案

    (10)   有三种车型,夏利,桑塔那,奔驰,请输入公里数和所乘做的车型后计算费用。(不足2.5公里费用是6,超过部分按照每公里1元,1.5元,2元的标准收取)

    (11)   有三个候选人,有100个投票人,请根据唱票数计算每个人的得票数(用结构体数组)

     

  5. hiroki 说:

    怎么这个也没有答案啊

  6. yingna 说:

    没有答案啊?

  7. liyang 说:

    急需答案!

  8. yy_uestc 说:

    后面这套C题目 还是比较简单的

留下一个回复