北京师范大学《c程序设计》期末考试必备考试通关指导.docx
- 文档编号:3353923
- 上传时间:2022-11-22
- 格式:DOCX
- 页数:17
- 大小:72.66KB
北京师范大学《c程序设计》期末考试必备考试通关指导.docx
《北京师范大学《c程序设计》期末考试必备考试通关指导.docx》由会员分享,可在线阅读,更多相关《北京师范大学《c程序设计》期末考试必备考试通关指导.docx(17页珍藏版)》请在冰豆网上搜索。
北京师范大学《c程序设计》期末考试必备考试通关指导
0523《C++程序设计》2021年6月期末在线考试指导
一、考试说明
(一)说明
满分为100分,考试时间为90分钟,考试形式为闭卷。
(二)题型及各题型所占分数和相应的答题技巧
1.单选题(每题分,共2021总计50分)
答题技巧:
选择最正确的那个选项,可以考虑排除法等选择技巧。
2.填空题(每题4分,共10题,总计40分)
答题技巧:
先定位考察的知识点是什么,再用专业的术语作答,答案尽量言简意赅。
3.编程题(每题5分,共2题,总计10分)
答题技巧:
按照题目要求,用标准的程序书写,注意细节。
二、复习重点内容
第二章C++简单程序设计
1、C++的特点
C++语言对C语言做了很多改进,引进类和对象的概念使得C语言发生了质变,即从面向过程变成面向对象。
在C++中,封装性、继承性和多态性是面向对象思想的主要特征。
2、C++程序的结构特征
C++程序通常由包括main()在内的一组函数组成,函数是构成C++程序的基本单位。
其中名为main的函数称为主函数,可放在程序的前部、中部和后部,不论放在程序的什么部位,它总是第一个被执行的函数。
因此,一个可运行的C++程序必须有主函数。
其他函数都是被调用函数,它们可以是系统提供的库函数,也可以是用户自己编写的函数。
用户自己编写的函数在使用前应给予“声明”。
可以说,C++是函数式的语言,程序的全部操作都是由函数完成的。
3、将C++源程序进行编译可得到目标文件。
在C++中,int、char和short三种类型数据在内存中所占用的字节数是由所用机器的字长决定
C++中cin是预定义的对象。
4、运算符与表达式
运算符:
如,+-*/%等。
表达式:
由运算符、操作数和括号组成,不带分号。
(1)算术运算符与算术表达式
基本算术运算符
+-*/(若整数相除,结果取整)%(取余,操作数为整数)
优先级与结合性:
先乘除,后加减,同级自左至右进行运算
++,--(自增、自减)例:
i++;--j;
(2)赋值运算符与赋值表达式
简单的赋值运算符"="
表达式的类型:
等号左边对象(或变量)的类型
表达式的值:
等号左边对象(或变量)被赋值后的值
复合的赋值运算符
(3)关系运算与关系表达式
关系运算是一种比较简单的逻辑运算,优先次序为:
>===!
=
优先级相同(高)优先级相同(低)
关系表达式是一种最简单的逻辑表达式,其结果类型为bool,值只能为true或false。
例如:
a>b,cb)
C++中类的定义结束声明的符号是;
(2)类的成员
类定义中包括数据成员和成员函数的声明
(3)对象
一个对象由一组属性和对这组属性进行操作的一组服务组成,通俗地讲类的对象是该类的某一特定实体,即该类型的变量。
声明形式:
类名对象名;
对象是类的实例,为对象分配存储空间而不为类分配存储空间。
对象具有多态性、继承性和封装性。
(4)类中成员的访问方式
类中成员互访:
直接使用成员名
类外访问:
使用“对象名.成员名”方式访问public属性的成员
(5)成员函数
①成员函数的实现
成员函数的函数原型声明要写在类体中,函数原型说明了函数的参数表和返回值类型。
成员函数的具体实现写在类定义之外。
注意:
实现成员函数时要指明类的名称。
②成员函数调用中的目的对象
调用普通函数可以直接通过函数及其参数表进行调用。
调用成员函数需要通过一个对象名加上“.”,再加上成员函数名及其参数才能调用。
③带默认形参值的成员函数
像普通函数一样,类的成员函数也可以有默认形参值,其调用规则与普通函数相同。
类的成员函数的默认值一定要写在类定义中,而不能写在类定义之外的函数实现中。
classClock{
public:
voidsetTime(intnewH=0,intnewM=0,intnewS=0);
……
};
2、构造函数
构造函数是用于为对象分配内存空间、对类数据成员进行初始化并执行其他内部管理操作的函数。
构造函数(包括析构函数)是不能被继承的,所以,一个派生类只能调用它的直接基类的构造函数。
在对象创建时(如:
Clocka;时)由系统自动调用构造函数。
如果程序中未声明,则系统自动产生出一个默认形式的构造函数——如:
Clock(){}。
构造函数允许为内联函数、重载函数、带默认形参值的函数。
(1)复制构造函数
复制构造函数(拷贝构造函数)是一种特殊的构造函数,其形参为本类的对象引用。
class类名
{public:
类名(形参);.
};
类名:
:
类(类名
例如:
inta[10];表示a为整型数组,有10个元素:
a[0]...a[9]
使用:
①必须先声明,后使用。
②只能逐个引用数组元素,而不能一次引用整个数组。
例如:
a[0]=a[5]+a[7]-a[2*3];
2、指针
指针提供了一种较为直接的地址操作手段。
正确地使用指针,可以方便、灵活而有效地组织和表示复杂的数据结构。
(1)内存空间的访问方式
①通过变量名访问——直接访问
②通过地址访问——间接访问
③地址运算符:
则
int*prt;定义了一个指向int型数据的指针变量,这个指针的名称是ptr,专门用来存放int型数据的地址。
指针变量的初始化语法形式:
存储类型数据类型*指针名=初始地址;
例:
int*pa=
注意事项:
①用变量地址作为初时,该变量必须在指针初始化之前已说明过,且变量类型应与指针类型一致。
inta;
int*pa=
②可以用一个已赋初值的指针去初始化另一个指针变量。
int*p=
int*q=p;
③不要用一个内部auto变量去初始化static指针。
inta;
staticint*p=etx();
3、动态内存分配
在C++程序中建立和删除堆对象使用两个运算符:
new和delete。
(1)动态申请内存操作符new
new类型名T(初值列表)
功能:
在程序执行期间,申请用于存放T类型对象的内存空间,并依初值列表赋以初值。
结果值:
成功:
T类型的指针,指向新分配的内存。
失败:
0(NULL)
(2)释放内存操作符delete
delete指针P
功能:
释放指针P所指向的内存。
P必须是new操作的返回值。
第七章继承与派生
1、类的继承与派生
以原有的类为基础产生新的类,就是说新类继承了原有类的特征,也可以说是从原有类派生出新类。
通过C++中的继承机制,可以从现存类中构建其子类。
继承具有传递性。
派生新类的过程一般包括:
①吸收已有类的成员、②调整已有类成员、③添加新成员3个步骤。
继承的目的:
实现代码重用。
在类继承中,缺省的继承方式私有继承。
派生的目的:
当新的问题出现,原有程序无法解决(或不能完全解决)时,需要对原有程序进行改造。
(1)派生类生成过程
派生新类的3个步骤:
1.吸收基类成员——实现代码重用
2.改造基类成员——实现代码扩充
3.添加新的成员——实现代码扩充
2、类型兼容规则
类型兼容规则是指在需要基类对象的任何地方,都可以使用公有派生类的对象来替代。
一个公有派生类的对象在使用上可以被当作基类的对象,反之则禁止。
具体表现在:
①派生类的对象可以隐含转换为基类对象。
②派生类的对象可以初始化基类的引用。
③派生类的指针可以隐含转换为基类的指针。
根据类型兼容规则,可以在基类对象出现的场合使用派生类对象进行替代,但是替代之后派生类仅仅发挥出基类的作用。
因为,在替代之后,派生类对象就可以作为基类的对象使用,但通过基类对象名、指针只能使用从基类继承的成员。
3、派生类的构造函数
构造派生类的对象时,就要对基类的数据成员和派生类新增的数据成员进行初始化。
(1)单一继承时的构造函数
派生类名:
:
派生类名(基类所需的形参,本类成员所需的形参):
基类名(参数表)
{
本类成员初始化赋值语句;
};
(2)构造函数的调用顺序
①调用基类构造函数,调用顺序按照它们被继承时声明的顺序(从左向右)。
②调用成员对象的构造函数,调用顺序按照它们在类中声明的顺序。
③派生类的构造函数体中的内容。
第九章流类库与输入输出
1.在C++中,打开一个文件就是将这个文件与一个流建立关联;关闭一个文件就是取消这种关联。
2.当使用ifstream流类定义一个流对象并打开一个磁盘文件时,文件的隐含打开方式为ios:
:
in。
++的流类库预定义的.与标准输出设备相关联的流是cout,cin是输入流对象。
O流类列表:
三、重点习题
(一)单选题
1、若要在if后一对圆括号中表示条件“a不等于0成立”,则能正确表示这一关系的表达式为()。
0
B.!
a
=0
2、有如下程序:
intmain(){
intn=9;
while(n>6){n--;cout
usingnamespacestd;
intx=100;
intmain(){
intx=2021
x+=:
:
x;
{intx=500;:
:
x+=x;}
cout
usingnamespacestd;
classA{
intnum;
public:
A(inti){num=i;}
A(A}
voidprint(){cout
usingnamespacestd;
structSTU{
charnum[10];floatscore[3];
};
intmain(){
STUs[3]={
{"20211",90,95,85},
{"20212",95,80,75},
{"20213",100,95,90}
},*p=s;
inti;floatsum=0;
for(i=0;iscore[i];
cout
usingnamespacestd;
intfun(inta,intb){
staticintm=1,i=2;
i+=m+1;m=i+a+b;
returnm;
}
intmain(){
intk=5,m=2,p;
p=fun(k,m);cout
usingnamespacestd;
intmain(){
ints;
for(intk=3;k
usingnamespacestd;
intmain(){
intsum=0,t;
for(intj=1;j
usingnamespacestd;
classMyclass{
public:
Myclass(inti=0,intj=0){
x=i;
y=j;
}
voidshow(){cout
usingnamespacestd;
classSample{
public:
staticinti;
voidset(intx){i=x;}
Sample(inti){this->i+=i;}
};
intSample:
:
i=10;
intmain(){
Samples(10);
Sample:
:
i+=100;
cout
usingnamespacestd;
intmain(){
inta=2,b=-1,c=2;
if(a
usingnamespacestd;
voidf(intx,inty){
intt;
if(x
usingnamespacestd;
intfun(char*s){
char*p=s;
while(*p!
='\0')p++;
returnp-s;
}
intmain(){
cout
usingnamespacestd;
classexample{
inta;
public:
example(intb){a=b++;}
voidprint(){a=a+1;cout
usingnamespacestd;
intfun(inta){
staticintx=10;
inty=1;
x+=a;
a++;
y++;
return(x+y+a);
}
intmain(){
inti=3;
while(i
usingnamespacestd;
classSample{
intn;
public:
Sample(inti){n=i;}
friendintadd(Sample
};
intadd(Sample}
intmain(){
Samples1(10),s2(2021
cout
usingnamespacestd;
intmain(){
inta,max=0;
cin>>a;
while(________){
if(max>a;
}
cout
usingnamespacestd;
classA{
inta;
public:
A():
a
(1){}
voidshowa(){cout
usingnamespacestd;
classA{
public:
A(inti=0){m=i;cout
usingnamespacestd;
intmain()
{
inta[]={10,202130,40};
int*pa=a;
for(inti=0;i
usingnamespacestd;
classA
{
public:
A(inti,intj){a=i;b=j;}
voidmove(intx,inty){a+=x;b+=y;}
voidshow(){cout
usingnamespacestd;
classBase
{
public:
virtualvoidf1(){coutf1();
p->f2();
p->f3();
p=
p->f1();
p->f2();
p->f4();
return0;
}
6、下面程序的输出结果是【】。
#include
usingnamespacestd;
intmain()
{
inta=8,b=9;
int*constp=
cout
usingnamespacestd;
intmain()
{
int*p;
【】
*p=25;
cout
#include
usingnamespacestd;
intmain()
{
fstreamfile;
("",ios:
:
out);
if(!
file)
{
cout
usingnamespacestd;
voidf();
classT
{
public:
T()
{
cout
usingnamespacestd;
intn[][3]={90,80,70,40,50,60};
intmain()
{
intn=100;
int
n++;
cout
usingnamespacestd;
classBase
{
charc;
public:
Base(charn):
c(n){}
virtual~Base(){cout
usingnamespacestd;
voidf(intcode)
{
try
{
if(code==0)throwcode;
if(code==1)throw'x';
if(code==2)throw;
}
catch(intn){cout
usingnamespacestd;
intmain()
{
intn[3][2]={10,202130,40,50,60};
for(intj=0;j
usingnamespacestd;
voidswap(int
intmain()
{
inta=17,b=11;
int*p1=
【】;
cout
usingnamespacestd;
classA
{
public:
voiddisp(){cout
usingnamespacestd;
intf(int);
intmain()
{
try
{
cout
usingnamespacestd;
【Swap函数】
intmain(){
inta,b;
cout>a>>b;
Swap(
cout
usingnamespacestd;
【结构体Time】
intmain(){
TimemyTime;
cout>;
cout>;
cout>;
cout>;
cout>;
cout>;
cout
usingnamespacestd;
intGetY(intx);
intmain(){
intx=0,y=0;
cout>x;
cout2
【Swap函数】
intmain(){
inta,b;
cout>a>>b;
Swap(
cout
usingnamespacestd;
classrectangle{
public:
rectangle(){};
rectangle(doublea,doubleb){
length=a;
width=b;
}
voidaddarea(rectangler1,rectangler2){
cout
usingnamespacestd;
【结构体Time】
intmain(){
TimemyTime;
cout>;
cout>;
cout>;
cout>;
cout>;
cout>;
cout<<"时间是:
"<<<<"年"<<<<"月"<<
<<"日"<<<<"小时"<<<<"分"<<<<"秒"< return0; } structTime{ shortyear; shortmonth; shortday; shorthour; shortminute; shortsecond; }; 考试指导使用说明: 本考试指导适用于202103学期期末考试使用,包括正考和重修。 指导中的章节知识点涵盖考试所有内容,给出的习题为考试类型题,习题答案要点只作为参考,详见课程讲义或课程PPT。 在复习中有任何问题请到课程答疑区咨询。 祝大家考试顺利!
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c 程序设计 北京师范大学c 程序设计期末考试必备考试通关指导 北京师范大学 程序设计 期末考试 必备 考试 通关 指导