C期末复习题一.docx
《C期末复习题一.docx》由会员分享,可在线阅读,更多相关《C期末复习题一.docx(33页珍藏版)》请在冰豆网上搜索。
C期末复习题一
C++语言程序设计期末复习题
一、单项选择题
1.下列符号中,不可以作为变量名的是 d 。
A. list_p_9 B. PA123
C. ready D. for
2.由C++目标文件连接而成的可执行文件的缺省扩展名为 b 。
A. cpp B. exe
C. obj D. lik
3.在每个C++程序中都必须包含有这样一个函数,该函数的函数名为 a 。
A.main B.MAIN C.name D.functkion
4.设x和y均为bool量,则x&&y为真的条件是 a 。
A.它们均为真 B.其中一个为真 C.它们均为假 D.其中一个为假
5.下列表达式中正确的是 b 。
A. (k++)++ B. k---j
C. k--/=5 D. (k+3)=5
6.执行下面程序段的输出结果是 b 。
intx=4,y=-55;
if(x>0)if(x>10)cout<<”AA”elsecout<<”BB”
elseif(y<-8)if(y>-20)cout<<”CC”elsecout<<”DD”;
A.AA B.BB C.CC D.DD
7.下面四个程序段中,输出23个*号的程序段是 c 。
A.for(inti=1;i<23;i++)cout<<’*’;
B.for(inti=23;i>=0;i--)cout<<’*’;
C.inti=23;while(i>0){cout<<’*’;i--;}
D.inti=0;while(0<=23){cout<<’*’;i++;}
8.在下面的一维数组定义中,哪一个有语法错误。
c
A. int a[]={1,2,3} B. int a[10]={0}
C. int a[] D. int a[5]
9.假定a为一个整型数组名,则元素a[4]的字节地址为 c 。
A.a+4 B.a+8 C.a+16 D.a+32
10.要定义一个int型二维数组a,并使其各元素具有初值:
2 3 0 0
4 0 5 0
0 0 0 0
则正确的定义语句是 b 。
A.inta[][]={2,3,0,0,4,0,5,0,0,0,0,0};
B.inta[][4]={2,3,0,0,4,0,5,0,0,0,0,0};
C.inta[3][4]={{2,3},{4,,5}};
D.inta[][]={{2,3,0,0},{4,0,5,0},{0,0,0,0}};
11.在下面的函数声明中,存在着语法错误的是 d 。
A. void BC(int a,int) B. void BD(int,int)
C. void BE(int,int=5) D. int BF(int x;int y)
12、下面的哪个保留字不能作为函数的返回类型?
c 。
A.void B.int C.new D.long
13.已知intf(int);和intg(int);分别是函数f和g\的原型。
下列语句中,将函数f作为语句调用的有 。
A.f(3)+g(3); B.p/=f(3); C.g(f(3)); D.f(g(3));
14.已知一函数的形参说明为intarr[5][6],在下列说明中,与此等效的形参说明为 d 。
A.intarr[][] B.int[5][] C.int*a[6] D.int(*a)[6]
15.已知函数f的原型是:
intf(chara,char*b=NULL,doublec=0.0);
则下列调用中,不能正确地调用f函数的是 。
A.f(99) B.f(‘A’,4.5) C.f(‘A’,”123”) D.f((char)65,”123”)
16.已知一函数的原型是:
intf(int,int=0,double=0.0);
则下列函数中可以加以重载的是 。
A.intf(int); B.intf(int,int); C.f(int,int,double); D.f(intdouble);
17.已知一函数中有下列变量定义,其中属于静态变量的是 。
A.inta=5; B.staticdoubleb; C.registercharc; D.autoshortd;
18.已知一个运行正常的的程序中有下面两个语句:
int *p1,*p2=&a;
p1=b;
由此可知,变量a和b的类型分别是 。
A.int和int B.int*和int C.int*和int D.int*和int*
19.假设p是一指针变量,下列表达式中正确的是 。
A.++p++ B.(++p)++ C.++(p++) D.p++-=3
20.设有程序段如下:
intk;
intA[10];
则下列表达式中,与元素A[k]等效的是 。
A.A+k B.*A+k C.*(A+k) D.A+*k
21.设有数组定义
inta[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
则表达式*(*(a+2)+1)的值是 。
A.5 B.6 C.9 D.10
22.要使语句:
p=newint[10]; 能够正常执行,p应定义为:
A.intp; B.intp[10]; C.int*p; D.int(*p)[10];
23.已知函数f的原型为:
voidf(int&a,char*b);
变量s,t的定义是:
ints;chart[]=”ABCD”;
把s和t分别作为第一参数和第二参数来调用函数f,正确的调用语句是:
。
A.f(&s,&t); B.f(&s,t); C.f(s,t); D.f(s,&t);
24.设有如下定义
struct Person{
char*name;
char*sex;
int age;
float pay;
}p={“李小莉”,”女”,23,370};
则下列语句中正确的是 。
A. cout<<(*p).name<name< <<(*p).sex<sex< <<(*p).age<age< <<(*p).pay<pay<C. cout<
<
<
<
25.设有定义如下:
union ABC{
char ch;
int ia;
int *ipa;
double db;
};
则表达式sizeof(ABC)的值是 。
A. 17 B. 8 C. 4 D. 1
26.假定AB为一个类,则该类的拷贝构造函数的声明语句为 。
A. AB&(AB x) B. AB(AB x)
C. AB(AB &) D. AB(AB*x)
27.对于结构中定义的成员,其隐含访问权限为 。
A. public B. protected
C. private D. static
28.当使用fstream流类定义一个流对象并打开一个磁盘文件时,文件的隐含打开方式为 。
A. ios:
:
in B. ios:
:
out
C. ios:
:
int|ios:
:
out D. 没有
29.假定AB为一个类,则执行“AB a(4),b[3],*p[2];”语句时,自动调用该类构造函数的次数为 。
A.3 B.4 C.6 D.9
30.假定要对类AB定义加号操作符重载成员函数,实现两个AB类对象的加法,并返回相加结果,则该成员函数的声明语句为:
。
A. AB operator+(AB &a,AB &b) B. AB operator+(AB &a)
C. operator+(AB a) D. AB &operator+()
二、填空题
1.执行“cout <<43<<’-‘<<18<<’=’<<43-18<2.已知’A’~’Z’的ASCII码为65~90,当执行“char ch=14*5+2;cout <语句序列后,得到的输出结果为 H 。
3.使用const语句定义一个标识符常量时,则必须对它同时进行 初始化 。
4.表达式x=x+1表示成增量表达式为 x++ 。
5.若x=5,y=10,则x>y和x<=y的逻辑值分别为 0 和 1 。
6.C++语言中的每条基本语句以 ; 作为结束符,每条复合语句以 }
作为结束符。
7.执行“cout <8.float和double类型的大小分别为 4 和 8 。
10.关系表达式x+y>5的相反表达式为 x+y<=5或者!
(x+y>y) 。
11.表达式:
x=625,i=(x>100?
10:
100)的值是 10 。
12.执行intx=4,y;y=x--+3;语句后,变量x的值是 3 ,y的值是 7 。
13.执行程序段
intx=5,y=10;
x+=y;y=x-y;x-=y;
后变量x的值是 10 ,y的值是 5 。
14.与赋值语句:
y=OK?
(READY?
-1:
0):
1;等效的嵌套的if语句为:
if(y=OK)
{if(READY)-1;else0;}
else1; 。
15.执行语句i=10;do{cout<<’*’;i--;}while(i+3);后,将显示出 13 个*号。
16.设有下面的定义
int s[10]={1,2,3,4,5,6,7,8,9,10};
int sum=0;
请完善下面的语句实现求数组s的所有元素之和,并保存在变量sum中:
for(int j=0 ; j<10 ;j++) sum+=s[j] ;
17.执行语句序列
char str1[10]=”ABCD”,str2[10]=”XYZxyz”;
for(inti=0;str1[i]=str2[i];i++);
后,数组str1中的字符串是 XYZxyz ,数组str2中的字符串是 XYZxyz 。
18.执行下面程序段
char str1[10]=”ABCD”,str2[10]=”XYZxyz”;
if(strcmp(str1,str2)>0)
cout<else
cout< 后的输出结果是 XYZxyz 。
19.执行“typedef int ABC[10];”语句把ABC定义为具有10个整型元素的 。
20.假定一个二维数组为a[M][N],则a[i]的地址值(以字节为单位)为 a+i 。
21.已知函数f的定义是:
int f(int n){n*=2;return n+1; }
则执行
int m=5,n=3;
m=f(n);
后,变量m的值是 7 ,n的值是 3 。
22.如果在一函数定义中使用 static 修饰符,则声明该函数不允许其它程序文件中的函数调用。
23.已知一函数模板定义为
templateType incre(Type n){return n+1;}
则函数调用incre(5.0)使用得该函数模板产生的实例化函数为:
24.已知文件fileA.cpp中的一些函数需要访问在另一个文件fileB.cpp中定义的全局整型
变量var,则在文件fileA.cpp的首部对变量var应声明为 extern 。
25.变量分为全局和局部两种, 变量没有赋初值时,其值是不确定的。
26.假定p所指对象的值为25,p+1所指对象的值为46,则执行“(*p)++;”语句后,p所
指对象的值为 26 。
27.假定要访问一个结构指针p所指对象中的b指针成员所指的对象,则表示方法为 *(p->b)
。
28.假定一个一维数组的定义为“char *a[8];”,则该数组所含元素的个数为 8 ,
所占存储空间的字节数为 。
29.假定a是一个二维数组,则a[i][j]的指针访问方式为 *(* (a+i) +j) 。
30.设px是指向一个类动态对象的指针变量,则执行“delete px;”语句时,将自动调用
该类的 析构函数 。
31.若需要把一个函数“void F();”定义为一个类AB的友元函数,则应在类AB的定义
中加入一条语句:
friendvoidF(); 。
32.若要在程序文件中进行标准输入输出操作,则必须在开始的#include命令中使用
头文件。
33.假定一个结构类型定义为
“struct D{int a; union{int b;double c;};D *d[2];};”,
则该类型的大小为 字节。
34.对一个类中的数据成员的初始化可以通过构造函数中的 函数体 实现,也可
以通过构造函数中的 初始化器 实现。
35.假定AB为一个类,则执行“AB a[10];”语句时,系统自动调用该类的构造函数的次
数为 10 。
36.假定类AB中有一个公用属性的静态数据成员bb,在类外不通过对象名访问该成员bb
的写法为 。
37.请完成下面的一个类的定义:
class ABC{
private:
inta,b;
public:
ABC(int aa,int bb=5)
{
a=aa ; //将aa的值赋给a
b=bb ; //将bb的值赋给b
}
intfA() ;
intfB() ;
};
int ABC:
:
fA(){return a+b; }
int ABC:
:
fB(){return a*b; }
三、下列程序运行后的输出结果
1.#include
voidmain()
{
ints=0;
for(inti=1; ;i++){
if(s>50)break;
if(i%2==0) s+=i;
}
cout <<"i,s="<
}i,s=15,56
2.#include
inta=5;
voidmain(){
inta=10,b=20;
cout< { inta=0,b=0;
for(inti=1;i<6;i++){
a+=i;b+=a;
}
cout<:
a< }
cout<}1020
15355
1020
3.#include
voidSB(charch){
switch(ch){
case"A":
case"a":
cout<<"well!
";break;
case"B":
case"b":
cout<<"good!
";break;
case"C":
case"c":
cout<<"pass!
";break;
default:
cout<<"nad!
";break;
}
}
voidmain(){
chara1="b",a2="C",a3="f";
SB(a1);SB(a2);SB(a3);SB("A");
cout<}good!
pass!
nad!
well!
4.#include
voidmain()
{
chara[]="abcdabcabfgacd";
inti1=0,i2=0,i=0;
while(a[i]){
if(a[i]=="a")i1++;
if(a[i]=="b")i2++;
i++;
}
cout<}43
5.#include