语言程序设计复习题及参考答案.docx
《语言程序设计复习题及参考答案.docx》由会员分享,可在线阅读,更多相关《语言程序设计复习题及参考答案.docx(27页珍藏版)》请在冰豆网上搜索。
![语言程序设计复习题及参考答案.docx](https://file1.bdocx.com/fileroot1/2023-5/19/d7ced513-1fda-4a3a-80ef-131d8d745fde/d7ced513-1fda-4a3a-80ef-131d8d745fde1.gif)
语言程序设计复习题及参考答案
福师1203考试批次《C++语言程序设计》复习题及参考答案
本课程复习题所提供的答案仅供学员在复习过程中参考之用,有问题请到课程论坛提问。
福师1203考试批次《C++语言程序设计》复习题及参考答案一
本复习题页码标注所用教材为:
教材名称
单价
作者
版本
出版社
C++程序设计教程(第二版)
39.5
钱能
2005年9月第2版
清华大学出版社
如学员使用其他版本教材,请参考相关知识点
一、选择填空(每小题2分,计16小题,共32分)
1、类MyClass的定义如下:
classMyClass
{
public:
MyClass(){value=0;}
SetVariable(inti){value=i;}
private:
intvalue;
}
则对下列语句序列正确的描述是_______。
MyClass*p,my;p=&my;
A)语句p=&my;是把对象my赋值给指针变量p
B)语句MyClass*p,my;会调用两次类MyClass的构造函数
C)对语句*p.SetVariable(5)的调用是正确的
D)语句p->SetVariable(5)与语句my.SetVariable(5)等价
【参考答案】:
D
2、对类的构造函数和析构函数描述正确的是_______。
A)构造函数不能重载,析构函数可以重载
B)构造函数可以重载,析构函数不能重载
C)构造函数可以重载,析构函数也可以重载
D)构造函数不能重载,析构函数也不能重载
【参考答案】:
B
3、在C++中,数据封装要解决的问题是______。
A)数据的规范化B)便于数据转换
C)避免数据丢失D)防止不同模块之间数据的非法访问
【参考答案】:
D
4、对于拷贝构造函数,正确的描述是________。
A)在C++语言中,如果不自定义类的拷贝构造函数,则每个类都有默认的拷贝构造函数
B)必须为每个类定义拷贝构造函数
C)如果要使用拷贝构造函数,则必须在类中先定义
D)当定义了类的构造函数时,如果要使用拷贝构造函数,则必须定义拷贝构造函数
【参考答案】:
A
5、继承具有_____,即当基类本身也是某一个类的派生类时,底层的派生类也会自动继承间接基类的成员。
A)规律性B)传递性C)重复性D)多样性
【参考答案】:
B
6、一个类的友元函数或友元类能够通过成员操作符访问该类的________。
A)私有成员B)所有成员C)公用成员D)保护成员
【参考答案】:
B
7、关于纯虚函数和抽象类的描述中,错误的是________。
A)纯虚函数是一种特殊的虚函数,它没有具体的实现
B)抽象类是指具有纯虚函数的类
C)一个基类中说明有纯虚函数,该基类的派生类一定不再是抽象类
D)抽象类只能作为基类来使用,其纯虚函数的实现由派生类给出
【参考答案】:
C
8、__①___提供了类对外部的接口,__②____是类的内部实现,而__③___不允许外界访问,但允许派生类的成员访问,这样既有一定的隐藏能力,又提供了开放的接口。
A)公有成员B)私有成员C)私有成员函数D)保护成员
【参考答案】:
A、C、D
9、关于C++语言和C语言的关系的下列描述中,错误的是________。
A)C语言是C++语言的一个子集
B)C语言和C++语言都是面向对象的语言
C)C++语言与C语言兼容
D)C++语言对C语言做了些改进
【参考答案】:
B
10、组成C++语言程序的是________。
A)子程序B)过程C)函数D)主程序和子程序
【参考答案】:
C
11、C++语言规定:
一个源程序中,main函数的位置________。
A)必须在最开始B)必须在系统调用的库函数的后面
C)可以任意D)必须在最后
【参考答案】:
C
12、C++中cin是________。
A)一个标准的语句B)预定义的类
C)预定义的函数D)预定义对象
【参考答案】:
D
13、将C++源程序进行________可得到目标文件。
A)编辑B)编译
C)连接D)拼接
【参考答案】:
B
14、将目标文件进行________可得到可执行文件。
A)编辑B)编译
C)连接D)拼接
【参考答案】:
C
15、下列符号中能用作C++自定义标识符的是________。
A)5abcB)if
C)-abcD)abc
【参考答案】:
D
16、若要在if后一对圆括号中表示条件“a不等于0成立”,则能正确表示这一关系的表达式为________。
A)a<>0B)!
a
C)a=0D)a
【参考答案】:
D
二、写出下列程序的运行结果
1、(4分)
#include
#include
classStudentID{
public:
StudentID(intid=0)
{
value=id;
cout<<"Assigningstudentid"<}
~StudentID()
{
cout<<"Destructingid"<}
protected:
intvalue;
};
classStudent{
public:
Student(char*pName="noname",intssID=0):
id(ssID)
{
cout<<"Constructingstudent"<strncpy(name,pName,sizeof(name));
name[sizeof(name)-1]='\n';
}
protected:
charname[20];
StudentIDid;
};
voidmain()
{
Students("Mary",2001);
Studentt("John");
}
程序运行的结果为:
【知识点】:
对象生灭,见P293,主要理解成员的初始化(P305)
2、(5分)
#include
classPoint
{
intx,y;
public:
Point(intx1,inty1)
{
x=x1;y=y1;
}
virtualintarea()const
{
return0;
}
};
classRect:
publicPoint
{
intl,w;
public:
Rect(intx1,inty1,intl1,intw1):
Point(x1,y1)
{
l=l1;w=w1;
}
virtualintarea()const
{
returnl*w;
}
};
voidfun(Point&p)
{
cout<
}
voidmain()
{
Rectrec1(3,4,10,7),rec2(5,10,8,16);
Point*base=&rec2;
fun(rec1);
fun(*base);
}
程序运行的结果为:
【知识点】:
继承,见P327,主要理解派生类的构造和继承方式。
3、(2分)
voidmain()
{inti=8;
switch(i)
{case9:
i=i+1;
Default:
i=i+1;
Case10:
i=i+1;
Case11:
i=i+1;
}
cout<
}
程序运行的结果为:
【知识点】:
switch语句,见P31
4、(3分)
voidmain()
{intk=4,n=0;
for(;n{n++;
if(n%3!
=0)continue;
k--;
}
cout<}
程序运行的结果为:
【知识点】:
for循环,见P36;continue语句,见P51
三、填空题
1、下列程序在构造函数和析构函数中申请和释放类的私有成员,请完成该类的实现。
(8分)
classMyClass
{
public:
MyClass(inta);
~MyClass();
private:
int*X;
};
MyClass:
:
MyClass(inta)
{
____①_____;
}
MyClass:
:
~MyClassO
{
____②______;
}
【知识点】:
构造函数的成员初始化(参见P305)和析构函数(参见P316)
2、以下是统计一个英文句子中字母出现个数的程序。
请将此程序补充完整。
(8分)
#include
intcount(charstr[]);
voidmain(){
charsl[80];
cout<<”Enteryaline:
”;
cin>>sl;
cout<<”count=”<}
intcount(charstr[]){
intnum=0;
for(inti=0;str[i];i++)
if(_____
(1)_________)num++;
return______
(2)________;
}
【知识点】:
函数机制,见P134
3、写出下面函数的功能。
(9分)
FloatFI(intn)//n为大于等于1的整数
{
floatx,y=0;
do{
cin>>x;
n--;
y+=x*x;
}while(n>0);
returny;
}
答:
该函数的功能为:
______________________
【知识点】:
do-while循环,参见P39
四、编程题
1、定义一个Shape抽象类,由它派生出Rectanglr和Circle类,二者都有GetArea()函数计算对象的面积,GetPerim()函数计算对象的周长。
(9分)
#include
classShape
{
[①定义GetArea和GetPerim函数______]
};
classCircle:
publicShape
{
public:
Circle(floatradius):
itsRadius(radius){}
floatGetArea(){return3.14*itsRadius*itsRadius;}
floatGetPerim(){return6.28*itsRadius;}
private:
floatitsRadius;
};
classRectangle:
publicShape
{
public:
[②定义Rectangle构造函数_____________]
[③定义GetArea()和GetPerim()函数_______]
private:
floatGetLength(){returnitsLength;}
floatGetWidth(){returnitsWidth;}
private:
floatitsWidth;
floatitsLength;
};
【知识点】:
继承,见P327,主要理解派生类的构造以及继承方式。
2、编写一个程序求一元二次方程的解(10分)。
讨论下述情形:
(1)a=0,不是二次方程。
(2)b^2-4ac=0,有两个相等实根。
(3)b^2-4ac>0,有两个不等实根。
(4)b^2-4ac<0,有两个复根(表示成x+yi,x-yi)。
【知识点】:
综合知识题,主要见if语句(参见P27)
3、编写一个程序计算两个给定长方形的面积之和。
要求在设计类成员函数addarea()(用于计算两个长方形的总面积之和)时使用对象作为参数。
(10分)
【知识点】:
类及相应的成员函数,参见P252
福师1203考试批次《C++语言程序设计》复习题及参考答案二
本复习题页码标注所用教材为:
教材名称
单价
作者
版本
出版社
C++程序设计教程(第二版)
39.5
钱能
2005年9月第2版
清华大学出版社
如学员使用其他版本教材,请参考相关知识点
一、选择填空(每小题2分,计16小题,共32分)
1、下列不是C++中整型常量的为。
A)02B)0C)038D)0XAE
【参考答案】:
C
2、下面表示反斜杠字符的是。
A)‘\’B)‘\\’C)“\”D)“\\”
【参考答案】:
B
3、已知字母a的ASCII码为十进制数97,且设ch为字符型变量,则表达式ch=‘8’-‘3’+‘a’=。
A)‘a’B)‘F’C)“f”D)表达式错误
【参考答案】:
C
4、设有“inta,b,c;”,下列选项中,不符合C++语法的语句是。
A)a=3;B)a+b*c;C){c=a>b?
a:
b};D).;
【参考答案】:
C
5、已知有定义“inta,b;constintc;”,下列符合C++语法的表达式为。
A)4+c=b=0B)a=++bC)a=c=b=6D)a=4++
【参考答案】:
B
6、若有语句inta=5;则执行语句a+=a*=10;后,a的值为。
A)55B)100C)60D)105
【参考答案】:
B
7、设在某个机器中,int型变量占2个字节的内存,则下列语句的输出结果为。
inti=65535;
cout<
A)65535B)0C)-1D)语法错误
【参考答案】:
C
8、执行以下语句后a和b的值分别为。
inta=5,b=6,w=1,x=2,y=3,z=4;
{a=w>x}&&{b=y>z};
A)6,6B)5,3C)0,6D)0,0
【参考答案】:
C
9、执行下列语句后,输出的结果为。
intx=0;
cout<<(x=4*5,x*5),x+25;
A)20B)100C)45D)125
【参考答案】:
C
10、如果a=1,b=2,c=3,d=4,则表达式a
a:
cc:
d的值为。
A)1B)2C)3D)4
【参考答案】:
A
11、voidmain(void)
{intn=9;
while(n>6){n--;cout<}
该程序的输出结果为。
A)987B)876C)8765D)9876
【参考答案】:
B
12、有如下程序
voidmain(void)
{intx=23;
do{cout<x);
}
该程序的执行结果是。
A)321B)23C)不输出任何内容D)陷入死循环
【参考答案】:
B
13、下面有关for循环的说法正确的为。
A)for循环只能用于循环次数确定的情况
B)for循环是先执行循环体语句,后判断表达式
C)在for循环中,不能用break语句跳出循环体
D)for循环的循环体中,可以包含多条语句,但必须用花括号括起来
【参考答案】:
D
14、下列程序运行输出结果为。
voidmain(void)
{inti,sum;
for(i=1;i<=3;sum++)sum+=i;cout<}
A)6B)3C)死循环D)0
【参考答案】:
C
15、以下正确的描述为。
A)continue语句的作用是结束整个循环的执行
B)只能在循环体内和switch语句体内使用break语句
C)在循环体内使用break语句或continue语句的作用相同
D)从多层循环嵌套中退出时只能使用goto语句
【参考答案】:
B
16、已知函数f的定义为:
voidf()
{.....}
则函数定义中void的含义为。
A)执行函数f后,函数没有返回值
B)执行函数f后,函数不再返回
C)执行函数f后,可以返回任意类型的值
D)以上三个答案全是错误
【参考答案】:
A
二、写出下列程序的运行结果
1、(4分)
include
intf(intx,inty)
{return(y-x)*x;
voidmain()
{inta=3,b=4,c=5,d;
d=f(f(a,b),f(a,c));
cout<}
}
程序的运行结果为:
【知识点】:
函数机制,参见P134,主要理解传值参数
2、(4分)
#include
longfib(intn)
{if(n>2)returnfib(n-1)+fib(n-2);
elsereturn2;
}
voidmain(void)
{cout<程序的运行结果为:
【知识点】:
递归函数,参见P161
3、(3分)
#include
voidf(inti)
{cout<<“int”<
voidf(floatf)
{cout<<“double”<voidf(doubled)
{cout<<“double”<voidmain()
{f(‘c’);f(‘10’);f(10.1);}
程序的运行结果为:
【知识点】:
函数的重载,参见P165
4、(3分)
#include
Longnumcow(intn)
{inti;
longsum=1;
for(i=4;ireturnsum;
}
voidmain()
{intn;
cout<<“InputtheYears:
”;cin>>n;
cout<<“Cowsum=:
”<}
程序的运行结果为:
【知识点】:
函数调用(参见P134)以及for循环(参见P40)
三、填空题
1、以下程度对输入的一个小写字母,将字母循环后移5个位置后输出,如‘a’变成‘f’,‘w’变成‘b’。
请在横线上填入正确的内容。
(10分)
#include
voidmain()
{charc;cin>>c;
if(c>=‘a’&&c<=‘u’)①;
elseif(c>=‘v’&&c<=‘z’)②;
cout<}
【知识点】:
if语句(参见P27)以及字符型变量(参见P70)
2、以下程序是计算x,y,z三个数中值最小的,请在横线上填入正确的内容。
(15分)
#include
voidmain()
{intx=4,y=5,z=8;
intu,v;
u=x①;
v=u②;
}
【知识点】:
if语句,参见P27
四、编程题
1、编程求1000之内的所有“完数”及其因子。
所谓“完数”是指一个数恰好等于它的因子之和。
例如6是完数,因为6=1+2+3。
(9分)
【知识点】:
for循环(参见P36)以及if语句(参见P27)
2、编写程序,其中包含三个重载的display()函数。
第一个函数输出一个double值,前面用字符串“Adouble:
”引导,第二个函数输出一个int值,前面用字符串“Aint:
”引导;第三个函数输出一个char字符,前面用字符串“Achar:
”引导。
在主函数中,分别用double,float,int,char和short型变量去调用display()函数,并对结果做简要说明。
(10分)
【知识点】:
函数重载,参见P165
3、编程:
输入一个三位整数,将它反向输出。
(10分)
【知识点】:
if语句,参见P27页
福师1203考试批次《C++语言程序设计》复习题及参考答案三
本复习题页码标注所用教材为:
教材名称
单价
作者
版本
出版社
C++程序设计教程(第二版)
39.5
钱能
2005年9月第2版
清华大学出版社
如学员使用其他版本教材,请参考相关知识点
一、选择填空(每小题2分,计16小题,共32分)
1、运算符+、=、*、>=中,优先级最高的运算符是。
A)+B)=C)*D)>=
【参考答案】:
C
2、下列说法正确的是。
A)cout<<“\n”是一个语句,它能在屏幕上显示”\n”
B)\68代表的是字符D。
C)1E+5的写法正确,它表示余割整型常量。
D)0x10相当于020。
【参考答案】:
D
3、下列不合法的变量名为()。
A)intB)int1C)name_1D)name0
【参考答案】:
A
4、下面正确的为()。
A)4.1/2B)3.2%3
C)3/2==1结果为1D)7/2结果为3.5
【参考答案】:
A
5、已知a=4,b=6,c=8,d=9,则“(a++,b>a++&&c>d)?
++d:
a
A)9B)6C)8D)0
【参考答案】:
D
6、已知i=5,j=0,下列各式中运算结果为j=6的表达式是。
A)j=i+(++j)B)j=j+i++C)j=++i+jD)j=j+++i
【参考答案】:
C
7、如果s是int型变量,且s=6,则下面s%2+(s+1)%2表达式的值为____。
A)0B)语法错C)1D)“假”
【参考答案】:
C
8、C++源文件的扩展名为。
A)cppB)cC)txtD)exe
【参考答案】:
A
9、C++的合法注释是。
A)/*ThisisaCprogram/* B)//ThisisaCprogram
C)“ThisisaCprogram”D)//ThisisaCprogram//
【参考答案】:
B
10、下列数组的定义中,是错误的。
A)charca1[]={‘c’,’m’,’n’};B)charca2=”name”;
C)charca3[4]=”your”;D)intarray[]={1,2,3,4};
【参考答案】:
C
11、下列一维数组定义正确的是。
A)x=6;intnum[x];B)constintx=6;floata[x];
C)constfloatx=6;intb[x];D)constintx=6;intc[x];
【参考答案】:
B
12、关于函数的声明和定义正确的是。
A)函数的声明是必须的,只有这样才能保证编译系统对调用表达式和函数之间的参数进行检测,以确保参数的传递正确
B)函数的定义和声明可以合二为一,可