《程序设计基础》练习题
《程序悉概念为主)
1.在C++的结构化程序设计框架中,程序的基本组成单元是___。
A.函数B.类
C.关系D.数据结构
2.下列特性中,C与C++共有的是_____。
A.继承B.封装C.多态性D.函数定义不能嵌套
3.面向对象程序设计思想的主要特征中,不包含____。
C.整型常量或整型表达式D.任何类型的表达式
28.若有以下说明和语句,且0<i<10,则对数组元素的错误引用是____。
int a[ ]={1,2,3,4,5,6,7,8,9,0}, *p,i;
p=a;
A.*(a+i) B.a[p-a] C.p+i D.*(&a[i])
29.若有以下定义和语句,且0<i<10,则对数组元素地址的正确表示是__。
6.下列哪个是C++语言的有效标识符?____。
A._No1 B.No.1 C.12345 D.int
7.在C++语言中,所有函数说明都必须指明返回值类型,没有返回值的函数应说明为____类型的函数。
A.int B.char C.float D.void
8.下列字符常量的写法中,错误的是____。
A.’\105’B.’*’C.’’’’D.’\a’
A.如果类A是类B的友元,那么类B也是类A的友元
B.如果函数fun( )被说明为类A的友元,那么在func( )中可以访问类A的私有成员
C.友元关系不能被继承
D.如果类A是类B的友元,那么类A的所有成员函数都是类B的友元
40.下面关于类MyClass的定义,对定义中的各语句描述正确的是____。
Class MyClass
int j=int( );
double d=double( );
cout<<j<<’‘<<d<<endl;
A.0 0 B.j d C.0 0.0 D.不确定
14.设int a=1,b=2;,则(a++)+b和a+++b这两个表达式分别为____。
A.3, 3 B.3, 4 C.4, 3 D.4, 4
extern int i;int i;
17.若int a=6,则执行完下列语句后,a的值为____。
A.1 B.6 C.10 D.11
18.如果变量x,y已经正确定义,下列语句哪一项不能正确将x,y的值进行交换____。
A.x=x+y,y=x-y,x=x-y;B.t=x,x=y;y=t;
C.t=y,y=x,x=t;D.x=t,t=y,y=x;
D.当动态分配内存失败时,系统会立刻崩溃,因此一定要慎用new
23.执行完下列代码段后,i和j的值为____。
int i;
int &j=i;
i=5;
j=i+1;
A.5,5 B.5,6 C.6,6 D.6,5
24.以下程序的执行结果是____。
#include <iostream.h>
int &max(int &x, int &y)
9.下列变量的存储分配方式中,系统不为其分配内存空间的是____。
A.auto变量B.register变量C.static变量D.extern变量
10.如int型变量x的初始值为1,变量y和t皆为int型,且表达式y=(t=x,x+=t,t),则变量y的值为____。
A.0 B.1 C.2 D.不确定
11.下列关于C++运算符结合性的说法中,正确的是____。
A.赋值运算符是左结合的B.复合赋值运算符是左结合的
C.单目运算符是左结合的D.双目算术符是左结合的
12.表达式18/5*sqrt(4.0)/5值的数据类型是____。
A.int B.double C.float D.不确定
13.下列代码的输出结果是____。
D.C++语言中函数都必须设有默认值
33.已知程序中已经定义了函数test( ),其原型是int test(int,int,int);,则下列重载形式中正确的是____。
A.char test(int, int, int);B.double test(int, int, double);
C.int test(int, int, int=0);D.float test(int, int, float=3.5F);
private:
int x,y,z;
};
A.语句1是类MyClass的构造函数定义
B.语句2和3实现类成员函数的重载
C.语句4实现对类成员变量x的更新操作
D.语句1、2、3、4都不正确
41.静态数据成员的初始化必须在____。
A.类内B.类外C.构造函数内D.静戊成员函数内
42.友元的作用是____。
D.保护成员在派生类中可以被访问,而私有成员不可以
38.有以下的类定义
class MyClass
{ public:
MyClass ( ){ cout <<1; }
};
则执行语句MyClass a,b[2],*p[2];后,程序的输出结果是____。
A.11 B.111 C.1111 D.11111
39.37.关于友元,下列说法错误的是____。
19.下列程序的运行结果为____。
#include <iostream.h>
void main( )
{ char a=’3’;
switch(a)
{ case‘3’:cout <<”3”;
case‘2’:cout<<”2”; break;
default: cout<<”1”;
}
}
A.3 B.321 C.31 D.32
34.函数重载是指____。
A.两个或两个函数取相同的函数名,但形参的个数或类型不同
B.两个以上的函数取相同的名字和具有相同的参数个数,但形参的类型可以不同
C.两个以上的函数名字不同,但形参的个数或类型相同
D.两个以上的函数取相同的名字,并且函数的返回值类型相同
35.下列正确的原型语句是____。
A.int Function(void)B.void Function(int);
int a[ ]={1,2,3,4,5,6,7,8,9,0}, *p,i;
p=a;
A.&(a+1) B.a++ C.*p D.&p[i]
30.类的指针成员的初始化是通过函数完成的,这个函数通常是_____。
A.析构函数B.构造函数C.其它成员函数D.友元函数
31.在C++语言中函数返回值的类型取决于____。
{ public:
void MyClass(int a ){x=a}//1
int f(int a, int b)//2
{ x=a; y=b; }
int f(int a, int b, int c=0)//3
{ x=a; y=b; z=c; }
static void g( ) { x=10; }//4
A.表达式p=p+1是合法的B.表达式a=a+1是合法的
C.表达式p-a是合法的D.表达式a+2是合法的
22.关于动态存储分配中,下列说法正确的是____。
A.new和delete是C++语言中专门用于动态内存分配和释放内存的函数
B.动态分配的内存空间也有可以被初始化
C.当系统内存不够时,会自动回收不再使用的内存单元,因此程序中不必用delete释放内存空间
15.设int x=2,y=4,z=7;则执行x=y--<=x||x+y!=z后x,y的值分别为____。
A.0,3 B.1,3 C.2,3 D.2,4
16.下列选项中,正确的声明语句是____。
A.int i;B.extern int i;
int i;extern long i;
C.extern int i;D.int i=1;
{ return (x>y?x:y); }
void main()
{ int n=2,m=10;
max(n,m)--;
cout<<”n=”<<n<<”,m=”<<m<<endl;
}
A.2,10 B.2,9 C.1,10 D.1,9
25.下列程序的输出结果是____。
#include <iostream.h>
26.合法的数组初始化语句是____。
A.char a=”string”;B.int a[5]={0,1,2,3,4,5};
C.int a[]=”string”;D.char a[]={0,1,2,3,4,5};
27.在C++语言中,引用数组元素时,其数组下标的数据类型允许是____。
A.只能整型常量B.只能整型表达式
void print( ) const{ cout <<a<<”“; }
};
void main( )
{ example x(3);
const example y(2);
x.print( );
y.print( );
}
A.2 2 B.4 3 C.4 2D.3 2
44.下列不属于派生类对基类的继承方式的是____。
A.提高程序的运用效率B.加强类的封装性
C.实现数据的隐藏性D.增加成员函数的种类
43.下面程序的输出结果是____。