27.下列定义中,定义指向数组的指针p的是[]
A.int*p[5]B.int(*p)[5]C.(int*)p[5]D.int*p[];
28.设有以下定义:
voidf1(int*m,long&n);
inta;
longb;
则以下调用合法的是[]
(a,b)(&a,b)(a,&b)(&a,&b)
29.下列各类变量中,不是局部变量的是[]
intx;f(intw)
z;inty;(定义在函数外)
30.已知p是一个指向类A数据成员m的指针,A1是类A的一个对象。
如果要给m赋值为5,
()正确的语句。
[]
>p=5C.A.*p=5D.*=5
31.以下选项中,决定函数的返回值的类型是[]
A.调用该函数的主调函数类型语句中的表达式类型
C.定义函数时所指定的返回值类型D.调用函数时临时决定
32.下面for语句的循环次数为[]
for(inti=0,x=0;!
x&&i<=5;i++);
A.无穷次.5C
33.在下面的字符数组定义中,有语法错误的语句是[]
a[20]="abcdefg"a[]="x+y=55"
a[15]={'1','2'}a[10]='5'
34.若用数组名作为函数调用的实参,传递给形参的是[]
A.数组的首地址B.数组中第一个元素的值
C.数组全部元素的值D.数组元素的个数
35.假定AB为一个类,则执行“ABa(4),b[5],*p[2];”语句时,自动调用该类构造函数的次数为[]
A.6B.7C.9D.11
36.当使用fstream流类定义一个流对象,并打开一个磁盘文件时,文件的隐含打开方式为[]
A.ios:
:
inB.ios:
:
outC.ios:
:
in|ios:
:
outD.没有
二、填空题:
1.若a是一个字符数组,则使用输入输出流对象cout向屏幕输出数组a中所存字符串的语句为_________。
2.当一个对象定义时,C++编译系统自动调用__________函数建立该对象并进行初始化。
++语言的参数传递机制包括值传递和____________传递两种。
4.假定p是一个指针,则(*p)++运算首先访问__________,然后使p的值增1。
5.假定对二维数组a[3][4]进行初始化的数据为{{2,5,6},{2,8},{7}},则a[1][1]被初始化为_______。
6.设px指向一个类的动态分配的对象,则执行“deletepx;”语句时,将自动调用该类的_______________。
7.变量的基本类型有、实型、字符型和枚举型。
8.语法的三种基本结构为顺序结构、选择结构和结构。
9.一个指针指向一个Data类对象,它保存着该对象的__________,相应的指针类型为Data类。
10.若do循环的“尾”为“while(++i<10)”,并且i的初值为0,同时在循环体中不会修改i的值,则循环体将被重复执行__________次后正常结束。
11.假定用户没有给一个名为AB的类定义构造函数,则系统为其隐含定义的构造函数为________________。
12.当在程序中执行到__________________语句时,就立即结束本层循环类语句或switch语句的执行。
13.字符和字符串常数的定界符分别为_________和双引号(")。
14.应用程序中只有一个函数,这个函数的名称是__________。
15.在switch语句中,每个语句标号所含关键字case后面的表达式必须是__________表达式。
16.假定p所指对象的值为25,p+1所指对象的值为46,则*p++的值为__________。
17.假定要动态分配一个类型为Worker的具有n个元素的数组,并由r指向这个动态数组,则使用的语句为Worker*r=__________________。
18.设有如下程序结构:
classBox
{…};
voidmain()
{BoxA,B,C;}
该程序运行时,分别调用构造函数和析构函数________次。
19.若有语句inta=6;,则计算表达式a+=a-=a*a后,a的值为__________。
20.在进行函数调用时,将把实参的__________传递给值参数,把实参数的地址传递给引用参数。
21.关系表达式x+y>5的相反表达式为__________________。
22.假设在程序中a、b、c均被定义成整型,所赋值都大于1,则能正确表示数学式
的表达式是__________________(不使用强制类型转换)。
23.假定a是一个一维数组,则a[i]的指针访问方式为__________________。
24.对一个类中的数据成员的初始化可以通过构造函数中的初始化表实现,也可以通过构造函数中的__________________实现。
++中的标识符只能由字母、数字和__________组成。
++语句cout<<__________<<120;可以用8进制数表示(输出)120。
27.利用“对象名.成员变量”形式访问的对象成员仅限于被声明为_____________的成员。
++在调用一个函数的过程中,可以直接或间接地调用该函数本身,这种调用称为__________调用。
29.在C++程序中包含一个头文件或程序文件的预编译命令为________________。
30.假定一维数组的定义为“inta[8];”,则该数组所含元素的个数为________。
31.十六进制常量前面应该加__________为前缀。
32.变量一般需要先赋初值再参与运算,__________变量没有赋初值时,将由系统自动置为0。
33.当程序中执行到__________________语句时,将结束所在循环语句中循环体的一次执行。
++中规定,数组元素的下标从_________开始。
35.假定有定义int*p,则指向p变量的指针变量pp定义语句为________________。
36.类test的析构函数名是________________。
三、判断题:
1.在C++中,自减运算符“--”可以用于变量,也可以用于常量。
[]
语句中必须有break语句,否则无法退出switch语句。
[]
3.若S表示一条C++语句,while
(1)S必定是无限循环。
[]
4.若有说明:
int*p1,*p2,m=3,n;则p1=&m;p2=p1;是正确的赋值语句。
[]
5.在C++语言中,类中的成员函数能存取类中的私有数据。
[]
6.控制格式输入输出的操作子oct不是设置域宽的。
[]
7.在C++中,0127是一个合法的整数,最高位的0实际上是不必要,其值就是127。
[]
8.如果x是一个整型变量,则语句“int*p=newint[x];”是正确的。
[]
9.数组是若干相同类型的数据的集合。
[]
10.在C++语言中,可以使用new运算符创建的对象或对象数组,可以使用运算符delete删除之。
[]
11.若类A是类B的友元类,且类B是类C的友元类,则类A也是类C的友元类。
[]
12.对于ofstream类对象file,feof成员函数的返回值为真表示打开文件失败。
[]
13.在switch语句中,switch后面的表达式可以为任意类型。
[]
14.'\n'、'\x6A'、'\101'均是C++的字符常量。
[]
15.一个变量的地址就称为该变量的“指针”。
[]
16.如果(x==y),则(*x==*y)。
[]
17.函数体内声明的静态变量,至多只会被初始化一次。
[]
18.构造函数和析构函数都不能重载。
[]
19.在C++语言中,while语句的循环体有可能一遍都不执行,而do—while语句的循环体至少执行一遍。
[]
20.在C++的命名标识符中,大小写字母是不加区分的。
[]
21.引用就是某个变量的别名,对引用的操作,实质上就是对被引用的变量的操作。
[]
22.在C++中,二维数组中元素排列的顺序是按行存放的,即在内存中先顺序存放第一行的元素,再存放第二行的元素。
[]
char*p说明了p是指向字符串的常量指针。
[]
24.说明或定义对象时,类名前面不需要加class关键字。
[]
25.在C++中,空语句表示什么都不做,因此毫无意义。
[]
26.预处理命令是在进行编译前执行的,然后再进行正常编译。
[]
27.语句“charc='c';charp=&c;”是错误的。
[]
28.在一个被调用函数中,一个return语句可返回多个值给调用函数。
[]
29.静态成员变量是整个类的所有对象共用的。
[]
函数只能按规定向文件写入所指定的字符数。
[]
++中,任何一个表达式加上一个分号就构成一个语句。
[]
32.在说明语句“inta(15),&b=a,*p=&a;”中,b的值与*p的值是相等的。
[]
33.在C++中,函数声明时要用函数原型,即定义函数时的函数头部分。
[]
循环中,循环变量的作用域是该循环的循环体内。
[]
35.在传值调用中,要求实参与形参的类型完全一致并且个数相等。
[]
36.使用class定义的类成员默认的访问权限是私有的(private)。
[]
37.在C++中,条件运算符的结合方向为从左到右。
[]
四、写出程序的运行结果:
1.
#include<>
voidmain()
{
inta=10,b=15;
{
a*=3;
intb=a+20;
cout<
}
cout<
}
运行结果:
2.
#include<>
intSD(inta,intb,charop)
{
switch(op)
{
case'+':
returna+b;
case'-':
returna-b;
}
}
voidmain()
{
intx=20,y=8;
cout<}
运行结果:
3.
#include<>
voidmain()
{
staticintb[][3]={{1,2,3},{4},{5,6}};
b[0][2]=12,b[1][2]=18;
cout<<**b<<"\t"<<**(b+1)<<"\t"<<**(b+1)<<"\t"<<*(*(b+1)+2)<<"\n";
cout<
}
运行结果:
4.
#include<>
voidmain()
{
charch;
cin>>ch;
switch(ch)
{
case'A':
case'a':
cout<<"1"<<'';break;
case'B':
case'b':
cout<<"2"<<'';break;
case'C':
case'c':
cout<<"3"<<'';break;
default:
cout<<"bad!
";break;
}
}
以上程序运行时,分别输入Acb,则
运行结果:
5.
#include<>
voidmain()
{
ints1=0,s2=1;
for(inti=2;i<5;i++)
{
s1+=i;
s2*=i;
}
cout<}
运行结果:
6.
#include<>
voidff(intx)
{cout<<"ff(int):
"<voidff(doublex)
{cout<<"ff(double):
"<voidmain()
{
floata;
ff(a);
charb('a');
ff(b);
}
运行结果:
7.
#include<>
voidmain()
{
ints=0;
for(inti=1;i<7;i+=2)
s+=i*i;
cout<<"s="<
}
运行结果:
8.
#include<>
voidmain()
{
inta[9]={3,5,7,9,11,13,15,17,25};
int*p=a;
for(inti=0;i<9;i++)
if((i+1)%3==0)
cout<<*(p+i)<<'';
cout<}
运行结果:
9.
#include<>
classA
{
public:
A(){cout<<"1";}
~A(){cout<<"2";}
};
classB:
publicA
{
public:
B(){cout<<"3";}
~B(){cout<<"4";}
};
voidmain()
{
Bb;
}
运行结果:
10.
#include<>
#include<>
intSC(inta,intb,intc)
{
if(a>b)a=b;
if(a>c)a=c;
returna;
}
voidmain()
{
intx,y,z;
x=5,y=15,z=25;
cout<}
运行结果:
11.
#include<>
constintn=5;
voidmain()
{
inta[n][n]={{3,2,4,1,5},
{8,7,2,5,6},
{6,9,1,4,3},
{5,5,3,6,2},
{2,8,1,8,6}};
ints=0;
for(inti=0;is+=a[i][i]+a[i][n-i-1];
if(n%2==1)
s-=a[n/2][n/2];
cout<
}
运行结果:
12.
#include<>
classs
{
inti,j;
public:
voidsetij(inta,intb){i=a,j=b;}
intGetMul(){returni*j;}
};
voidmain()
{
s*p;
p=news[3];
for(intj=0;j<3;j++)
p[j].setij(j,j);etMul()<<"";
delete[]p;
}
运行结果:
13.
#include<>
intc;
voidf1(intx,int*sum)
{
staticinty;
x++;y++;c=c+y;
*sum=(x+y)/c;
}
voidmain()
{
intb=100;
f1(1,&b);
cout<
f1(2,&b);
cout<
}
运行结果:
14.
#include<>
voidmain()
{
inti,*d=newint[5];
for(i=0;i<5;i++)
{
d[i]=2*i+1;
cout<}
delete[]d;
}
运行结果:
15.
#include<>
classAB
{
inta;
public:
AB(intaa=0){a=aa;}
~AB(){cout<};
classB:
publicAB
{
intb;
public:
B(intaa=0,intbb=0):
AB(aa){b=bb;}
~B(){cout<
};
voidmain()
{
Bx(5),y(6,7);
}
运行结果:
16.
#include<>
intLB(int*a,intn)
{
ints=1;
for(inti=0;i{
s*=*a;
a++;
}
returns;
}
voidmain()
{
inta[5]={1,2,3,4,5};
cout<}
运行结果:
17.
#include<>
intf(inta)
{
intb=0;
staticintc=3;
b++,c++;
return(a+b+c);
}
voidmain()
{
inta=2,I;
for(I=0;I<3;I++)
cout<}
运行结果:
18.
#include<>
classA
{
int*a;
public:
A(intx)
{