C++ 模拟试题1
一、 选择题(在A、B、C、D四个答案中选择一个正确的填入后面的括号中)
1.下面( )是对类ttt的声明。
A. void class ttt;
B. class int ttt;
C. class ttt( );
D. class ttt;
2. 用于类中虚成员函数说明的关键字是( )
A. public B. virtual C. protected D. private
3.下面是关于静态成员的说法,其中不正确的是( )。
A. 静态成员有类作用域,但与普通非静态成员有所不同
B. 静态函数没有this指针,同一个类的不同对象拥有相同的静态数据成员
C. 静态数据成员的初始化必须在类外进行
D. 静态函数同样可以访问非静态数据成员
4. 下面的说法中,不正确的一句是( )。
A.类的友元函数是类的特殊成员函数,它对所有的类成员、保护成员和私有成员享有完全访问特权。
B. 一个类的友元类中的成员函数都是这个类的友元函数
C. 适用于类成员函数和数据的访问控制同样适用于枚举和嵌套类
D. 与结构类似,类也可以互相嵌套,适用于嵌套结构的规则也适用于嵌套类
5. ( )语言是面向对象的语言。
A. C B. Pascal C. Fortran D. C++
6. C++风格的源文件包含的输入输出头文件为()
A. stdio.h B. stdafx.h C. iostream.h D. stream.h
7. 与C语言printf(“Hello word\n”) ;语句功能相同的C++语句是()
A. cout>>”Hello word\n”
B. cin>>” Hello word\n”
关于printf函数正确的是C. cout<<” Hello word\n”
D. cin<<” Hello word\n”
8. 在下面几个元素中,不是面向对象的要素的是( );
A. 重载 B. 对象 C. 类 D. 继承
9. 对于int *pa[5];的描述,下面叙述正确的是( );
A. pa是一个指向数组的指针,所指向的数组是5个int型元素;
B. pa是一个指向某数组中第5个元素的指针,该元素是int型变量;
C. pa是一个具有5个元素的指针数组,每个元素是一个int型指针;
D. pa[5]表示某个数组的第5个元素的值。
10. 下面程序使用new与delete命令:
#include <iostream.h>
main( )
{
long *p , i;
p=new long;
if(!p) {
cout<<”Allocation error\n”;
return 1;
}
*p=1000;
i=(long)p;
cout<<”Here is integer at p:”<<*p<<”\n”;
cout<<”Here is i: “<<i<<”\n”;
delete p;
return 0;
}
下面是对这段程序的叙述,其中正确的是()。
A. 有错误,编译不能通过
B. 正确,执行结果为:1000 1000
C. 正确,但执行结果的第二个数值不定
D. 正确,执行结果的各个数值均不为1000
二、 判断下列描述正确性,对者划√,错者划×(每小题2分)。
1. C++中标识符内的大小写字母是没有区别的。
2. 宏定义命令是分号结束的。
3. C++的程序中,对变量一定要先说明再使用,说明只要在使用之前就可以。
4. while循环语句的循环体至少执行一次。
5. 在C++中,所有函数在调用前都要说明。
6. 析构函数是一种函数体为空的成员函数。
7. 如果一个函数没有返回值时,定义时需要用void说明。
8.派生类是从基类派生出来的,它不能再生成新的派生类。
9.对象成员的表示与结构变量成员表示相同,使用运算符.或->。
10.构造函数和析构函数都可以重载,因为它们都是成员函数。
三、 写出下面程序的输出结果。
1.#include<iostream.h>
void main()
{ int a,b,c;
a=1,b=2,c=a+b+3;
cout<<a<<”,”<<b<<”,”<<c<<endl;
c=(a++,a+=6,a+b); cout<<c<<endl;
}
2. #include <iostream.h>
void swap(int &x,int &y)
{
int temp;
temp=x;
x=y;
y=temp;
cout<<”x=”<<x<<”,”<<”y=”<<y<<endl;
}
void main()
{
int a(5),b(9);
swap(a,b);
cout<<”a=”<<a<<”,”<<”b=”<<b<<endl;
}
3. #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( );
}
四、 编程或程序填空。
1.在下划线处填上正确的语句并给出程序的输出结果(6分)。
#include <iostream.h>
#include ____(1)_______
class strA
{
public:
strA(float,float,float);
______(2)________;
______(3)________;
public:
float a,b,c;
};
float strA::fun1( )
{
return a+b+c;
}
strA::strA(float i,float j,float k)
{
a=i; b=j; c=k;
}
double strA::fun2( )
{
float s;
s=float((a+b+c)/2.0);
return sqrt(s*(s-a)*(s-b)*(s-c));
}
void maina( )
{
strA tri(3,4,5);
cout<<tri.fun1( )<<endl;
cout<<tri.fun2( )<<endlin;
}
2.编写分别可求两个整型、浮点型和双精度型数和的重载函数,并写主函数调用之;
3.使用引用作为函数参数,编写一个交换两变量值的函数,并写主函数调用之。
C++模拟试题2
一、 选择题(在A、B、C、D四个答案中选择一个正确的填入后面的括号中)
1. C++中,封装是借助于( )达到的。
E. 指针 B. 类 C. 数组 D. 函数
3. 宏定义由()结束。
A. 分号 B. 句号 C. 新行 D. 冒号
3. 下面是关于一个类的友元的说法,其中不正确的是( )
A. 友元函数可以访问该类的私有数据成员
B. 友元的声明必须放在类的内部
C. 友元函数可以是类的成员函数
D. 类与类之间的友元关系不能被继承
4. C++中声明常量的关键字是( )。
A. const B. extern C. public D. enum
5. 关于动态联编的下列描述中,错误的是( )。
A. 动态联编是以虚函数为基础的
B. 动态联编时在运行时确定所调用的函数代码的
C. 动态联编调用函数操作是使用指向对象的指针或对象引用
D. 动态联编是在编译时确定操作函数的
6. 下面函数( )的表示方法说明它使用对象的引用作为参数。
A. test(pt *p) B. test(pt p)
C. test(pt &p) D. test(const P)
7. 虚函数的调用()。
A. 一定使用动态联编
B. 必须使用动态联编
C. 一定使用静态联编
D. 不一定使用动态联编
8. 关于C++与C语言的关系的描述中,错误的是( );
A. C语言是C++的子集; B. C语言与C++是兼容的;
C.C++对C语言进行了一些改进; D. C++和C语言都是面向对象的。
9.重载函数在调用时选择的依据中,( )是错误的。
A. 参数个数 B. 参数类型 C. 函数名字 D. 函数类型
10. 下面的程序是关于函数承载的,假定A,B,C,D是它们可能的输出之一,其中正确的输出是( )。
发表评论