版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
中央广播电视大学计算机科学与技术专业面向对象程序设计课程考核说明(2023年版)一、考核说明《面向对象程序设计》课程是电大系记录算机科学与技术专业本科生(专科起点)的一门必修课程。本课程是数据结构、操作系统、计算机网络、软件工程等的先修课程,在整个专业教学体系中占据非常重要的基础地位。本课程重要介绍C++语言的基本语法规则,各种数据类型的定义、表达和使用,各种流程控制语句的定义与作用,类和对象的定义与应用,面向过程和面向对象的程序设计方法等内容。面向对象的思想是需要在实践中不断摸索和体会的,学生们在后续课的学习和以后的工作中要积极去运用和实践。教学的重要目的是让学生可以建立起思考问题的方法,指导以后的软件开发实践。现将该课程考核的有关问题说明如下:1.考核对象全国电大系统开放教育试点计算机科学与技术专业(专科起点本科)学生。2.教学媒体文字主教材《C++面向对象程序设计》王萍编著清华大学出版社出版实验教材《面向对象程序设计实验》徐孝凯等编中央广播电视大学出版社出版录象教材16讲王萍主讲中央广播电视大学音像出版社出版复习资料《面向对象程序设计期末复习指导》中央电大教育杂志社出版发行作业练习《面向对象程序设计形成性考核作业册》中央电大教育杂志社出版发行网上辅导在电大在线计算机科学与技术《面向对象程序设计》课程网页上发表3.命题依据本考核说明以电大计算机科学与技术专业《面向对象程序设计教学大纲》为依据编制。本考核说明是考试命题的依据。4.考核规定本课程是以实用为最终目的,重要考核学生对C++语言的掌握限度和对解决一般问题的程序设计能力。不要死记硬背,注重理解和运用。考核分为以下几个层次:理解:规定学生理解面向过程和面向对象程序设计的基本思想和方法,理解C++语言程序的基本结构,理解各种C++语法成分定义、表达和作用。应用:规定学生可以根据所学的C++语言知识和程序设计知识,分析和理解一般的程序或函数模块或类模块,可以根据解决简朴问题的规定编写出较规范的并且可读性好的面向过程或面向对象的函数模块或程序。综合应用:规定学生可以综合运用多个知识点进行比较复杂的程序(函数模块)分析和设计,考察学生综合运用知识的能力和实际解决问题的能力。5.命题原则(1)在教学大纲和考核说明所规定的知识范围内命题。在教学知识范围之内,需要灵活运用才可以解决问题的试题不属于超纲。(2)试题的考察规定覆盖面广、区分度高。(3)试题兼顾各个能力层次,理解约占40%,应用约占40%,综合应用约占20%。(4)试题的难易限度和题量适当,按难易限度分为四个层次:容易占20%,较易占30%,较难占30%,难占20%。题量安排以平时可以独立完毕作业者,能在规定的考试时间内做完并有一定期间检查为原则。6.试题题型单项选择题:根据题意,从四种可选择的答案中选择合适的一种答案。填空题:根据题意,在画有横线或空白处填写合适内容。程序填充题:根据C++程序或函数(类)模块,及相应的功能描述,在画有横线或空白处填写合适内容。理解问答题:根据C++程序或函数(类)模块,回答一些问题。如写出程序运营结果或函数调用结果,写出程序或函数所能实现的功能,按题意规定指犯错误位置并改正。编程题:给出编程规定和函数原型,编写出相应的程序或函数模块。7.考核形式:采用期末考核与形成性考核相结合的方式。形成性考核分为两种,一种视作业完毕情况和实验完毕情况而定,占总成绩的15%;另一种为期末上机考核,占总成绩的15%,完毕一个指定题目的程序开发和调试,由各省级电大在省内统一命题,时间为60分钟。期末考核占总成绩的70%,为闭卷考试,由中央电大统一命题,时间为150分钟。总成绩满分为100分,合成成绩达60分及以上者可获得该课程规定的4学分,否则不获得该课程学分。 二、考核内容和规定第一部分程序设计基础考核目的:考核学生对C++程序结构、程序运营过程、各种数据类型的作用、数据常量表达、表达式构成、运算符含义、简朴语句和复合语句格式等的掌握限度。考核的知识点:C++语言特点和程序的基本结构。上机输入、编辑、连接、运营一个C++程序的过程。整数、字符、实数、逻辑等标准数据类型的含义。各种常量的字面表达和符号表达,变量的定义与使用。常用运算符的表达、优先级与结合性。表达式的分类和使用。考核规定:理解:C++语言的有关基本概念、程序结构、数据类型的分类与作用、常量和变量的表达、运算符含义、表达式构成与运算等内容。应用:可以编写简朴的程序,能完毕简朴数据和表达式的输入和输出,能运用变量存放输入数据、临时数据和计算结果,能运用符号常量存放固定数据,能根据数值计算和数据解决的规定选择合适的常量或变量表达,能运用运算符进行算术、比较(即关系)和逻辑运算,能把一般数学算式、不等式或条件表达成相应的C++表达式。第二部分流程控制语句与程序模块的基本结构考核目的:考核学生对各种分支语句、循环语句和跳转类语句的理解和掌握限度,对程序模块的顺序、分支和循环这三种基本结构的理解限度,对运用流程控制语句编写程序解决实际问题的能力。考核的知识点:下列各种控制语句的定义格式、执行过程与作用:if语句、switch语句、for语句、while语句、do语句、break语句、continue语句、return语句等。各种分支和循环语句互相嵌套的作用和执行过程。考核规定:理解:各种语句的格式、执行过程与作用,语句之间互相嵌套的概念。应用:(1)可以分析具有if和switch分支类语句的程序模块并给出功能或执行结果,可以按照分支解决的规定编写出相应的分支程序。(2)可以分析具有for、while和do循环类语句的程序模块并给出功能或执行结果,可以按照循环解决的规定编写出相应的循环程序,如累加计算、数据记录、求最大值、求平均值等程序。(3)可以实现if和switch语句之间的转换,可以实现for、while和do循环语句之间的转换。综合应用:运用各种流程控制语句和其他语句等已有知识进行比较复杂的程序分析与设计,如双重或三重循环的程序分析与设计。第三部分函数考核目的:考核学生对变量作用域的理解限度,对函数定义与调用格式的掌握限度,对形式参数和实在参数的使用与结合的理解限度,对模块化程序设计方法的掌握限度。考核的知识点:模块化程序设计的概念,多文献结构的程序。函数的定义、声明与调用格式,静态函数的含义。函数定义中值参数、指针参数、数组参数、引用参数、常量参数的声明格式及作用;函数中带默认值参数的说明与作用。函数调用中的实参与函数定义中的形参之间的结合过程。函数返回值的一般类型、指针类型和引用类型的作用。变量的作用域和生存期,静态变量的特点。内联函数的定义格式及作用。递归函数的设计方法和调用过程。函数重载的含义和作用。函数模板的定义格式及作用。考核规定:理解:(1)模块化程序设计与函数的关系,函数的定义格式与声明格式,函数调用表达式的格式及执行过程,带默认值参数的含义与用法。(2)全局变量、局部变量、静态变量的含义。(3)内联函数和函数模板的定义与声明格式,函数模板的实例化,重载函数的作用。应用:(1)可以分析已知函数,给出所能实现的功能或运营结果。(2)可以根据解决问题的需要合理地设立函数参数、函数的返回值类型以及编写出函数体。(3)运用递归函数来简化程序设计。(4)运用函数重载来优化程序设计。(5)运用函数模板来设计可以解决任何数据类型的程序。第四部分数组、结构、指针和引用考核目的:考核学生对数组、字符串、结构、指针、引用等数据类型的理解和掌握限度。考核的知识点:一维数组的概念、定义和初始化。二维及多维数组的概念、定义和初始化。一维和二维数组元素的下标访问方式。字符串与字符数组的区别与联系,字符串的输入与输出。常用字符串函数(如strlen,strcpy,strcmp,strcat等)的调用格式与作用。结构类型的定义格式和作用,结构变量的定义格式和初始化。结构成员的表达和使用。指针的概念、定义及初始化。针对指针的各种运算操作。数组名的指针含义,数组元素的下标与指针方式的表达及转换。数组形参与指针形参之间的等价表达与转换。引用的定义和初始化,引用参数与值参数的区别。一般变量与数组的存储空间的动态分派与释放。考核规定:理解:(1)数组、字符串、结构、指针、引用等的概念、表达和作用。(2)数组的存储空间分派,数组元素的地址计算,数组元素的下标访问方式和指针访问方式。(3)字符串的存储格式,字符串的输入输出方式,字符串函数的调用。(4)数据空间的动态分派与释放,链表的结构与访问结点的过程。应用:(1)可以分析和设计在一维数组上的顺序查找、选择排序、插入排序等算法。(2)可以分析和设计在二维数组上的矩阵加、减、转置、乘等运算的算法。(3)可以分析和设计运用字符串函数进行字符串解决的算法。(4)可以分析和设计动态生成的链表,在链表头或尾插入或删除结点的算法,以及遍历链表的算法。(5)可以分析和设计对顺序或链接表达的栈或队列进行插入或删除元素(结点)的算法。(6)可以使用引用类型作为函数的参数类型和返回值类型。综合应用:运用数组、字符串、结构、指针、引用等数据类型进行程序设计。第五部分类与对象考核目的:考核学生对类这种复杂数据类型的理解和运用限度,对面向对象程序设计方法的掌握限度。考核的知识点:面向对象程序设计的概念。类的定义,类与结构的区别和联系。类成员的访问控制与访问方式。内联与非内联成员函数的声明与定义。对象的生成和初始化。类的作用域。类的构造函数与析构函数。类的拷贝构造函数和赋值重载函数。静态数据成员和静态成员函数。对象成员和一般成员的初始化方式。友元函数与友元类。this指针。用数组和链表实现队列类和栈类。考核规定:理解:(1)面向对象程序设计的有关概念。(2)类的定义,类成员的访问权限,构造函数与析构函数的定义格式及作用。(3)静态数据成员定义、初始化与作用,静态函数成员的定义格式与特性。(4)友元函数和友元类的声明与作用。应用:(1)可以分析和设计具有简朴类定义的程序。(2)可以使用数组或链表建立队列类和栈类。综合应用:(1)可以根据程序规定构造满足规定的类。在构造过程中充足考虑构造函数和析构函数的使用、成员访问控制的运用、内联函数的运用、静态成员的选用。(2)可以根据规定构造多个类完毕所规定的程序设计任务,多个类之间可以发生一定的关系,如一个类作为另一个类的成员或友元、一个类使用另一个类的服务等。第六部分继承与多态性考核目的:考核学生对面向对象机制(封装、继承和多态)的理解和掌握限度。考核的知识点:结构化程序设计和面向对象程序设计思想的不同。继承(单继承与多继承)的含义,派生类的定义和使用。派生类中构造函数和析构函数的执行过程。对派生类和基类中同名成员的访问方式。静态联编与动态联编的各自的含义和区别。静态联编与函数重载,动态联编与虚函数,多态性。虚基类,抽象类,纯虚函数。考核规定:理解:(1)类继承的概念和作用,派生类的定义格式。(2)派生类对基类的继承方式,派生类对基类成员的访问权限。(3)静态联编和动态联编的含义,函数重载和虚函数的作用。应用:(1)能分析具有派生类的程序。(2)可以根据规定构造类的继承层次,并完毕一定的程序设计。综合应用:可以运用继承、虚函数、动态联编(即多态性)等机制完毕面向对象的程序设计。第七部分运算符重载考核目的:考核学生对运算符重载的理解和掌握限度。考核的知识点:运算符重载的概念与函数定义格式。一般函数的运算符重载和成员函数的运算符重载。引用在运算符重载中的作用。作为友元函数的运算符重载。单目和双目算术运算符的重载。增1和减1运算符的重载。插入运算符和抽取运算符的重载。圆括号运算符和中括号运算符作为成员函数的重载。考核规定:理解:(1)运算符重载的概念及作用。(2)引用在运算符重载中的作用。(3)运算符重载作为一般函数和成员函数在参数上的区别。应用:可以分析和设计带有运算符重载的函数或类。三、期末考核试题样例及解答一、单项选择(每小题1分,12小题,共12分)1.C++源程序文献的缺省扩展名为()。A.cppB.exeC.objD.lik2.x>0||y==5的相反表达式为()。A.x<=0||y!=5B.x<=0&&y!=5C.x>0||y!=5D.x>0&&y==53.在下面的字符数组定义中,有语法错误的是()。A.chara[20]=“abcdefg”;B.chara[]=“x+y=55.”;C.chara[15];D.chara[10]=’5’;4.以下对的的函数原型语句是()。A.doublefun(intx,inty)B.doublefun(intx;inty)C.doublefun(int,int);D.doublefun(intx,y);5.在下面存储类中,()的对象不是局部变量。A.外部静态类B.自动类C.函数形参D.寄存器类6.假定有“structBOOK{chartitle[40];floatprice;};BOOK*book=newBOOK;”,则对的的语句是()。A.strcpy(book->title,”WangTao”);B.strcpy(book.title,”WangTao”);C.strcpy(*book.title,”WangTao”);D.strcpy((*book)->title,”WangTao”);7.软件产品所具有的所有或部分地再用于新的应用的能力称为该软件的()。A.可维护性B.可复用性C.兼容性D.对的性8.在多文献结构的程序中,通常把具有main()函数的文献称为()。A.主文献B.实现文献C.程序文献D.头文献9.在一个用链表实现的队列类中,假定每个结点包含的值域用elem表达,包含的指针域用next表达,链队的队首指针用elemHead表达,队尾指针用elemTail表达,若链队为空,则进行插入时必须把新结点的地址赋给()。A.elemHeadB.elemTailC.elemHead和elemTailD.elemHead或elemTail10.假定AB为一个类,则执行“ABa,b(2),c[3],*p=&a;”语句时共调用该类无参构造函数的次数为()。A.5B.6C.3D.411.引入友元的重要目的是为了()。A.增强数据安全性B.提高程序的可靠性C.提高程序的效率和灵活性D.保证类的封装性12.假如是类B在类A的基础上构造,那么,就称()。A.类A为基类或父类,类B为超类或子类B.类A为基类、父类或超类,类B为派生类或子类C.类A为派生类,类B为基类D.类A为派生类或子类,类B为基类、父类或超类二、填空(每空1分,15小题,共18分)1.C++语言是在_________语言的基础上发展起来的。2.假定x=5,y=6,则执行表达式y*=x++计算后,x和y的值分别为__________和__________。3.假定x是一个逻辑量,则x&&false的值为__________。4.在if语句中,每个else关键字与它前面同层次并且最接近的________关键字相配套。5.一个二维字符数组a[10][20]可以存储________个字符串,每个字符串的长度至多为________。6.局部变量具有局部生存期,存放在内存的____________区中。7.假定p所指对象的值为25,p+1所指对象的值为42,则执行*(p++)或*p++运算后,p所指对象的值为________。8.已知语句“cout<<s;”的输出是“apple”,则执行语句“cout<<s+2;”的输出结果为__________。9.面向对象软件开发的生命周期分为三个阶段,即分析、__________和__________。10.若采用p->abc(y)表达式调用一个成员函数,在成员函数中使用的________就代表了类外的p指针。11.当用户为一个类定义有____________时,则系统不会为该类再自动生成一个默认构造函数。12.假定用户为类AB定义了一个构造函数"AB(intaa,intbb):a(aa),b(bb){}",则定义该类的对象时,有________种定义格式。13.假定用户只为类AB定义了一个构造函数"AB(intaa,intbb=0){a=aa;b=bb;}",则定义该类的对象时,其实参表中至少带有_________个实参。14.在重载一个单目运算符时,参数表中没有参数,说明该运算符函数只能是类的_____________。15.若要保证一个公共的基类在派生类中只产生一个基类子对象,则必须都以____________的方式继承它。三、程序填充。对程序、函数或类中划有横线的位置,根据题意按标号把合适的内容填写到程序下面相应标号的后面(每小题6分,3小题,共18分)1.把从键盘上输入的一个大于等于3的整数分解为质因子的乘积。如输入24时得到的输出结果为“2223”,输入50时得到的输出结果为“255”,输入37时得到的输出结果为“37”。#include<iostream.h>voidmain(){ intx; cout<<"请输入一个整数,若小于3则重输:"; docin>>x;while(___(1)___); inti=2; do{ while(___(2)___){ cout<<i<<''; x/=i; } ___(3)___; }while(i<x); if(x!=1)cout<<x; cout<<endl;}(1)(2)(3)2.假定有定义为“structNODE{intdata;NODE*next;};”,下面算法根据table数组中的n个元素建立一个表头指针为L的链表,链表中结点值的顺序与数组元素值的顺序正好相反。voidf6(NODE*&L,inttable[],intn){ L=NULL; if(n<=0)return; inti=0; NODE*p; while(___(1)___){ p=newNODE; p->data=___(2)___; p->next=L; ___(3)___; i++; }}(1)(2)(3)3.已知一个运用数组实现栈的类定义如下:constintARRAY_SIZE=10;classStack{public: voidInit(){top=-1;}//初始化栈为空voidPush(intnewElem);//向栈中压入一个元素 intPop();//从栈顶弹出一个元素 boolEmpty(){//判栈空returntop==-1;} intDepth(){returntop+1;}//返回栈的深度 voidPrint();//按照后进先出原则依次输出栈中每个元素,//直到栈空为止private: intelem[ARRAY_SIZE];//用于保存栈元素的数组 inttop;//指明栈顶元素位置的指针};voidStack::Push(intnewElem){ if(___(1)___){ cout<<"栈满!"<<endl; exit(1);//中止运营 } ___(2)___; elem[top]=___(3)___;}(1)(2)(3)四、写出程序或程序段的运营结果(每小题6分,3小题,共18分)1.#include<iostream.h>voidmain(){intx=5; switch(2*x-3){ case4:cout<<x<<’’; case7:cout<<2*x+1<<’’; case10:cout<<3*x-1<<’’;break; default:cout<<"default"<<endl; } cout<<"switchend."<<endl;}2.#include<iostream.h>voidmain(){ inti,j,len[3]; chara[3][8]={"year","month","day"}; for(i=0;i<3;i++){ for(j=0;j<8;j++) if(a[i][j]=='\0'){ len[i]=j;break; } cout<<a[i]<<":"<<len[i]<<endl; }}3.#include<iostream.h>#include<string.h>classPoint{ intx,y;public: Point(intx1=0,inty1=0):x(x1),y(y1){ cout<<"Point:"<<x<<''<<y<<'\n'; } ~Point(){ cout<<"Pointdes!\n"; }};classText{chartext[100]; //文字内容public: Text(char*str){strcpy(text,str);cout<<"Textcon!\n"; } ~Text() {cout<<"Textdes!\n";}};classCircleWithText:publicPoint,publicText{public: CircleWithText(intcx,intcy,char*msg): Point(cx,cy),Text(msg){ cout<<"PointwithTextcon!\n"; } ~CircleWithText(){cout<<"PointwithTextdes\n";}};voidmain(){ CircleWithTextcm(3,4,"hello"); }五、指出程序或函数的功能(每小题6分,2小题,共12分)1.doublef1(doublea,doubleb,charop){ switch(op){ case’+’:returna+b; case’-’:returna-b; case’*’:returna*b; case’/’:if(b==0){ cout<<"dividedby0!"<<endl; exit(1); } elsereturna/b; default:cout<<"operatorerror!"<<endl; exit(1); }}功能:2.IntNode*FindMax(IntNode*f){ if(!f)returnNULL; IntNode*p=f; f=f->next; while(f){ if(f->data>p->data)p=f; f=f->next; } returnp;}假定IntNode的类型定义为:structIntNode{ intdata;//结点值域 IntNode*next;//结点指针域};功能:六、程序改错。请根据程序或函数模块的功能改写个别地方的错误(每小题6分,共6分)。在下面的定义中,NODE是链表结点的结构,appendToList则是一函数,其功能是:在list所指向的链表的末尾添加一个新的值为x的结点,并返回表头指针。函数中有两处错误,指犯错误所在行的行号并提出改正意见。structNODE{intdata;NODE*next;};NODE*appendToList(NODE*list,intx){//1行NODE*p=newint;//2行p->data=x;//3行p->next=NULL;//4行if(list==NULL)returnp;//5行NODE*p1=list;//6行while(p1->next!=NULL)p1=p1->next;//7行p1=p;//8行returnlist;}错误行的行号为______和________。分别改正为______________和______________。七、编程(每小题8分,2小题,共16分)1.编一程序求出满足不等式的最小n值并输出。2.根据下面类中MaxMin函数成员的原型和注释写出它的类外定义。classAA{ int*a; intn; intMS;public: voidInitAA(intaa[],intnn,intms){ if(nn>ms){cout<<"Error!"<<endl;exit(1);} MS=ms; n=nn; a=newint[MS]; for(inti=0;i<MS;i++)a[i]=aa[i]; }intMaxMin(int&x,int&y);//从数组a的前n个元素中求出//最大值和最小值,并分别由引用参数x和y带回,//同时若n大于0则返回1,否则返回0。};试题参考解答:一、单项选择1.A2.B3.D4.C5.A6.A7.B8.A9.C10.D11.C12.B二、填空1.C2.630
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 积分商城积分购物合同模板
- 补充合同的条款解说
- 正规权威严谨委托检测服务合同
- 招标启示政府服装采购
- 香烟酒水紧急购销合同
- 解除房屋买卖合同重要通知
- 购销合同中英文版合同争议解决
- 印花税购销合同的合同纠纷执行和解
- 工艺品购销合同范本电子版
- 供应商合同中的供应商信用政策
- 专题13 原电池 化学电源-五年(2020-2024)高考化学真题分类汇编(原卷版)
- 国家开放大学《Web开发基础》形考任务实验1-5参考答案
- TGDNAS 056-2024 胚胎移植妇女围术期护理
- 2023-2024学年教科版三年级上学期科学期中检测试卷(含答案)
- 2024年北京京能清洁能源电力股份有限公司招聘笔试参考题库含答案解析
- 《小英雄雨来》读书分享会
- 《智能建造导论》 课件全套 刘占省 第1-12章 智能建造的兴起-中国智能建造之路
- 三年级语文上册第五单元【教材解读】
- 钻井作业指导书
- 《诗意中国》朗诵稿
- 河北省学校治安安全工作标准
评论
0/150
提交评论