找回密码
 注册SCIFIFANS!
首页 科技专区 编程开发 C艹参考试题

C艹参考试题

1
回复
4367
查看
[ 复制链接 ]

该用户从未签到

5

主题

10

回帖

187

积分

LV.1

积分
187
<

用邮箱/用户名来登录sci-fifans!

您需要 登录 才可以下载或查看,没有账号?注册SCIFIFANS!

x
一 单项选择题:
1、C++源程序文件的默认扩展名为(A)
A. cpp      B. exe       C. obj       D. lik
2. 在如下结构体定义中,不正确的是( B)。
a.structstudent
   {int no;
    char name[10];
    float score;
   };
b.structstud[20]
   {
    int no;
    char name[10];
    float score;
   };
c.structstudent
   {
    int no;
    char name[10];
    float score;
   } stud[20];
d.struct
   {
    int no;
    char name[10];
    float score;
   }stud[100] ;
3. 类的构造函数被自动调用执行的情况是在定义该类的(c)
A. 成员函数时
B. 数据成员时
C. 对象时
D. 友元函数时
4. 已知类A是类B的友元,类B是类C的友元,则(D)
A. 类A一定是类C的友元
B. 类C一定是类A的友元
C. 类C的成员函数可以访问类B的对象的任何成员
D. 类A的成员函数可以访问类B的对象的任何成员
5. 类的析构函数是对一个对象进行以下哪种操作时自动调用的是(B)
A. 建立
B. 撤销
C. 赋值
D. 引用
4. 下列关于静态数据成员的描述中正确的是()
A. 静态数据成员是类的所有对象所共有的
B. 静态数据成员要在构造函数内初始化
C. 类的每个对象有自己的静态数据成员
D. 静态数据成员不能通过类的对象调用
5. 类B是类A的公有派生类,类A和类B中都定义了虚函数func(),p是一个指向类A对象的指针
,则p->A::func()将()
A. 调用类A中的函数func()
B. 调用类B中的函数func()
C. 根据p所指的对象类型而确定调用类A中或类B中的函数func()
D. 既调用类A中函数,也调用类B中的函数
6.下列描述中,正确的是(  C).
A. 虚函数是一个static 类型的成员函数   B. 虚函数是一个非成员函数
C. 抽象类是指具有纯虚函数的类          D. 抽象类可以说明其对象
7.在C++中继承方式有几中(    C     )
        A. 1        B. 2        C. 3        D. 4
8. 所谓多态性是指 ()
A. 不同的对象调用不同名称的函数
B. 不同的对象调用相同名称的函数
C. 一个对象调用不同名称的函数
D. 一个对象调用不同名称的对象
10. ( D)不是构造函数的特征
a.构造函数的函数名与类名相同
b.构造函数可以重载
c.构造函数可以设置缺省参数
d.构造函数必须指定类型说明
11. 已知:类A中一个成员函数说明如下:
  void Set(A&a);
  其中,A&的含义是(C )
a.指向类A的指针为a
b.a的地址值赋给变量Set
c.a是类A对象的引用,用来作函数Set()的参数
d.变量Aa按位与作为函数Set()的参数
12. 关于虚函数的描述中,(C )是正确的。
a.虚函数是一个static类型的成员函数
b.虚函数是一个非成员函数
c.基类中说明了虚函数后,派生类中将其对应的函数可不必说明为虚函数
d.派生类的虚函数与基类的虚函数具有不同的参数个数和类型
13.在公有派生情况下,有关派生类对象和基类对象的关系,不正确的叙述是( C)
A.派生类的对象可以赋给基类的对象    B.派生类的对象可以初始化基类的引用
C.派生类的对象可以直接访问基类中的成员     D.派生类的对象的地址可以赋给指向基类的指针
14.对于类定义
class A{
public:virtualvoid func1( ){ }
void func2( ){ }
class B:public A{
public:void func1(){cout<<class B func 1<<end1;}
virtual voidfunc2( ){cout<<class B func 2<<end1;}
下面正确的叙述是(C )
A. A::func2( )B::func1( )都是虚函数     B. A::func2( )B::func1( )都不是虚函数
C. B::func1()是虚函数,而A::func2( )不是虚函数     D.B::func1( )不是虚函数,而A::func2( )是虚函数
15.  C++中解决命名冲突的机制是:
A. 虚基类       B. 虚函数      C. 函数重载       D. 名字空间
17、函数重载是指(A )
A. 两个或两个以上的函数取相同的函数名,但形参的个数或类型不同
B. 两个以上的函数取相同的名字和具有相同的参数个数,但形参的类型可以不同
C. 两个以上的函数名字不同,但形参的个数或类型相同
D. 两个以上的函数取相同的函数名,并且函数的返回类型相同
18、假定AA为一个类,a为该类公有的数据成员,x为该类的一个对象,则访问x对象中数据成员a的格式为(D )
           A. x(a)     B. x[a]      C. x->a      D. x.a
19.关于类和对象不正确的说法是(c)
  A.类是一种类型,它封装了数据和操作    B.对象是类的实例
  C.一个类的对象只有一个                D.一个对象必属于某个类
20.下列有关构造函数的描述中,正确的是(B)
  A.构造函数可以带有返回值              B.构造函数的名字与类名完全相同
  C.构造函数必须带有参数                D.构造函数必须定义,不能缺省
21.如没有使用private关键字定义类的数据成员,则默认为(  A    )
A.private       B.public    C.protected  D.friend
22.假定要对类 AB 定义加号操作符重载成员函数,实现两个 AB 类对象的加法,并返
回相加结果,则该成员函数的声明语句为 (  B  )
A. AB  operator+(AB & a, AB &b)        B. AB  operator+(AB & a)
C. operator+(AB  a)                        D. AB  & operator+( )  
23. 所谓数据封装就是将一组数据和与这组数据有关操作组装在一起,形成一个实体,这实体 也就是(A) A. 类 B. 对象 C. 函数体 D. 数据块
24. 关于对象概念的描述中,说法错误的是(A) A. 对象就是C语言中的结构变量 B. 对象代表着正在创建的系统中的一个实体 C. 对象是类的一个变量 D. 对象之间的信息传递是通过消息进行的
25. 在main函数中可以用p.a的形式访问派生类对象p的基类成员a,其中a是(D) A. 私有继承的公有成员 B. 公有继承的私有成员 C. 公有继承的保护成员 D. 公有继承的公有成员
二、程序改错题
1、#include<iostream.h>   
  class Box{   
  public
voidSetBox(int aint b){x=ay=b}
    voidprint(){cout<<x<<y<<endl}
  }
  main(){
    Box b;  
b. SetBox(1.51.8)//error:实际参数类型与f1函数的形参类型不一致,应修改为一致。
b.print()
}
2#include<iostream>
using namespace std;
class A{
   staticint x;
   inty;
public:
   A(inta,int b){
      x=a;
      y=b;
   }
   intget(){
      returnx+y;
   }
};
x=5;//intA::x=5;
int main()
{
   Aa(1,2);
   cout<<a.get()<<endl;
   return0;
}
3
#include <iostream.h>
class Test {
public:
fun(int i,int j) {
x=i;y=j;}
show() {
cout<<"x="<<x;
if(y) cout<<",y="<<y<<endl;cout<<endl;}
private:
int x,y;
};
void main() {
Test a;
a.fun(1);//参数个数不够
a.show();
a.fun(2,4);
a.show();
}
答案:int i,int j调用时,既有一个参数,也有两个参数,且没有重载,所以参数需要带默认值。所以int i,int j错误。 〔修改〕int i,int j=0//注j只要有一个int类型的数据就行。
4
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
class A {
    public:A(const char *na){strcpy(name,na);}
    private:char name[80];
};
class B:public A {
public:
     B(const char *nm):A(nm){}
     void show(); };
void B::show() {
        cout<<"name:"<<name<<endl;
}
void main() {
    Bb1("B");
    b1.show();
}
答案:private:因为name如果是私有的,在派生类中无法访问,而基类没有提供成员函数来访问 name,所以更改name访问权限为公有或保护,这样对于派生类来说是透明的。 〔修改〕public:或protected:
5
class Student
{
public:
    Student(intn,string nam)
    {
       num=n;
       name=nam;
    }
    voiddisplay()
    {
       cout<<"num:"<<num<<endl;
       cout<<"name:"<<name<<endl;
    }
protected:
    intnum;
    stringname;
};
class Student_rj:public Student
{
public:
    Student_rj(intn,string nam,int a):Student(n)//Student
    {age=a;}
    voidshow()
    {
       display();
       cout<<"age:"<<age<<endl;
    }
private:
    intage;
};
三、程序填空题(每空2分,共20分)
1、已知一个类的定义如下:
#include “iostream”
class AA
{
            int a[10];
            int n;
public:
            void SetA(int aa[], int nn); //用数组aa初始化数据成员a,
                                         //用nn初始化数据成员n
            int MaxA( );       //从数组a中前n个元素中查找最大值
            void PrintA();    //输出数组a中的前n个元素的最大值
};
        该类中MaxA()函数的实现如下,请在标号位置补充适当的内容。
int __(1)__ // AA::MaxA()
{
           intx=a[0];
           for(inti=1; i<n; i++)
               if(a>x)__(2)__;//x=a
           __(3)__;// returnx;
}
2
class point
{
private:
int m,n;
public:
point(int,int);
point(point&);
};
point::point(int a,int b)
{
m=a;
n =b;
}
point::point(point&t )
{
m=t.m;
n=t.n;
}
3
#include <iostream.h>
class Base
    {
     public:
       int x;
       static const int b;
       Base( int, int);
       int a;
     };
__(2)__b =15;//int Base::
Base::Base(int i,int j): __(2)__{ }// a(i),x(j)
int main()
{
   Baseb(4,5);
   return0;
}
4在下面程序横线处填上适当内容,使程序执行结果为: S=2 S=5 S=9
#include <iostream.h> voidsum(int i) {static int s; _________;cout<<"s="<<s<<endl; } void main (void) {int i; for(i=0;____;____) sum(i); }
答案:s=s+i+2;,i<3,i++ 〔解析〕根据结果和调用形式,得出规律。注意静态成员能保留上次运行的结果。循环了3次 ,退出循环的条件。
四、程序设计题(每小题10分,共20)
1、编写一个学生类Student,数据成员包括num(学号),name(姓名),sex(性别),年龄(age)。要求用成员函数实现以下功能:
(1)构造函数对四个数据成员初始化;
(2)display成员函数输出四个数据成员的值;
(3)set成员函数可以通过输入的方式改变四个数据成员的值。
2写一个程序,定义一个抽象类Animal,由它派生3个类:Cat ()Dog()Sheep ()。用虚函数Call分别输出这三种动物的叫声(猫:喵喵,狗:旺旺,羊:咩咩)。要求用基类指针数组,使它每一个元素指向一个派生类对象。

使用道具 举报

该用户从未签到

10

主题

87

回帖

416

积分

版主

积分
416
QQ
giao。。。真是让人头秃

使用道具 举报

您需要登录后才可以回帖 登录 | 注册SCIFIFANS!

本版积分规则